aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controls/controls.pri6
-rw-r--r--src/controls/controls.pro11
-rw-r--r--src/controls/qquickcolorimageprovider.cpp (renamed from src/imports/controls/universal/qquickuniversalimageprovider.cpp)11
-rw-r--r--src/controls/qquickcolorimageprovider_p.h (renamed from src/imports/controls/universal/qquickuniversalimageprovider_p.h)16
-rw-r--r--src/controls/qquickpaddedrectangle_p.h7
-rw-r--r--src/controls/qquickproxytheme.cpp51
-rw-r--r--src/controls/qquickproxytheme_p.h42
-rw-r--r--src/controls/qquickstyle.cpp255
-rw-r--r--src/controls/qquickstyle.h56
-rw-r--r--src/controls/qquickstyleattached.cpp231
-rw-r--r--src/controls/qquickstyleattached_p.h (renamed from src/controls/qquickstyle_p.h)27
-rw-r--r--src/controls/qquickstyleselector.cpp196
-rw-r--r--src/controls/qquickstyleselector_p.h17
-rw-r--r--src/controls/qquickstyleselector_p_p.h19
-rw-r--r--src/controls/qtquickcontrolsglobal.h56
-rw-r--r--src/controls/qtquickcontrolsglobal_p.h55
-rw-r--r--src/imports/calendar/calendar.pro2
-rw-r--r--src/imports/calendar/plugins.qmltypes1
-rw-r--r--src/imports/calendar/qquickcalendar_p.h2
-rw-r--r--src/imports/calendar/qquickcalendarmodel_p.h12
-rw-r--r--src/imports/calendar/qquickdayofweekmodel_p.h8
-rw-r--r--src/imports/calendar/qquickdayofweekrow.cpp7
-rw-r--r--src/imports/calendar/qquickdayofweekrow_p.h12
-rw-r--r--src/imports/calendar/qquickmonthgrid.cpp14
-rw-r--r--src/imports/calendar/qquickmonthgrid_p.h26
-rw-r--r--src/imports/calendar/qquickmonthmodel_p.h8
-rw-r--r--src/imports/calendar/qquickweeknumbercolumn.cpp7
-rw-r--r--src/imports/calendar/qquickweeknumbercolumn_p.h12
-rw-r--r--src/imports/calendar/qquickweeknumbermodel_p.h8
-rw-r--r--src/imports/calendar/qtlabscalendarplugin.cpp13
-rw-r--r--src/imports/controls/Button.qml16
-rw-r--r--src/imports/controls/CheckBox.qml20
-rw-r--r--src/imports/controls/ComboBox.qml1
-rw-r--r--src/imports/controls/Frame.qml11
-rw-r--r--src/imports/controls/GroupBox.qml10
-rw-r--r--src/imports/controls/ItemDelegate.qml20
-rw-r--r--src/imports/controls/MenuItem.qml24
-rw-r--r--src/imports/controls/Pane.qml2
-rw-r--r--src/imports/controls/ProgressBar.qml16
-rw-r--r--src/imports/controls/RadioButton.qml20
-rw-r--r--src/imports/controls/RangeSlider.qml10
-rw-r--r--src/imports/controls/ScrollBar.qml16
-rw-r--r--src/imports/controls/ScrollIndicator.qml16
-rw-r--r--src/imports/controls/Slider.qml10
-rw-r--r--src/imports/controls/SpinBox.qml1
-rw-r--r--src/imports/controls/StackView.qml14
-rw-r--r--src/imports/controls/SwipeDelegate.qml99
-rw-r--r--src/imports/controls/Switch.qml20
-rw-r--r--src/imports/controls/TabButton.qml17
-rw-r--r--src/imports/controls/TextArea.qml2
-rw-r--r--src/imports/controls/TextField.qml2
-rw-r--r--src/imports/controls/ToolButton.qml17
-rw-r--r--src/imports/controls/controls.pri13
-rw-r--r--src/imports/controls/controls.pro20
-rw-r--r--src/imports/controls/designer/SwipeDelegateSpecifics.qml56
-rw-r--r--src/imports/controls/designer/designer.pri1
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.pngbin2653 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-pageindicator.pngbin689 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-pane-background.pngbin341 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.pngbin1162 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-slider-track.pngbin1018 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.pngbin217 -> 0 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-applicationwindow-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-applicationwindow-wireframe.png)bin5283 -> 5283 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-busyindicator-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png)bin1594 -> 1594 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-busyindicator-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png)bin1583 -> 1583 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-busyindicator.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif)bin3241 -> 3241 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-busyindicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-busyindicator.png)bin1713 -> 1713 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button-background.png)bin1499 -> 1499 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button-label.png)bin1550 -> 1550 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button-disabled.png)bin1653 -> 1653 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button-focused.png)bin1515 -> 1515 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button-normal.png)bin1507 -> 1507 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button-pressed.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button-pressed.png)bin1949 -> 1949 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-button.gif)bin2171 -> 2171 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-button.png (renamed from src/imports/controls/doc/images/qtlabscontrols-button.png)bin1518 -> 1518 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png)bin2607 -> 2607 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-checked.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png)bin2687 -> 2687 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png)bin2582 -> 2582 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png)bin2197 -> 2197 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png)bin2069 -> 2069 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-indicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png)bin2539 -> 2539 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png)bin1547 -> 1547 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-checkbox.png (renamed from src/imports/controls/doc/images/qtlabscontrols-checkbox.png)bin2573 -> 2573 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-combobox-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-combobox-background.png)bin2731 -> 2731 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-combobox-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png)bin2752 -> 2752 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-combobox-delegate.png (renamed from src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png)bin4999 -> 4999 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-combobox-popup.png (renamed from src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png)bin4969 -> 4969 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-combobox.png (renamed from src/imports/controls/doc/images/qtlabscontrols-combobox.png)bin4984 -> 4984 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-control.pngbin0 -> 9850 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-default.png (renamed from src/imports/controls/doc/images/qtlabscontrols-default.png)bin19608 -> 19608 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-dial-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-dial-background.png)bin6563 -> 6563 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-dial-handle.png (renamed from src/imports/controls/doc/images/qtlabscontrols-dial-handle.png)bin7325 -> 7325 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-dial.png (renamed from src/imports/controls/doc/images/qtlabscontrols-dial.png)bin7204 -> 7204 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-drawer-expanded-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-drawer-expanded-wireframe.png)bin3004 -> 3004 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-drawer-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-drawer-wireframe.png)bin3956 -> 3956 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-frame-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-frame-background.png)bin345 -> 345 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-frame.png (renamed from src/imports/controls/doc/images/qtlabscontrols-frame.png)bin5213 -> 5213 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-gallery-drawer.png (renamed from src/imports/controls/doc/images/qtlabscontrols-gallery-drawer.png)bin17156 -> 17156 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-gallery-menu.png (renamed from src/imports/controls/doc/images/qtlabscontrols-gallery-menu.png)bin17209 -> 17209 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-gallery-welcome.png (renamed from src/imports/controls/doc/images/qtlabscontrols-gallery-welcome.png)bin23502 -> 23502 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-groupbox-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png)bin2685 -> 2685 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-groupbox-checkable.png (renamed from src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png)bin8311 -> 8311 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-groupbox-label.png (renamed from src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png)bin2673 -> 2673 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-groupbox.png (renamed from src/imports/controls/doc/images/qtlabscontrols-groupbox.png)bin7718 -> 7718 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-itemdelegate-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png)bin3499 -> 3499 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-itemdelegate-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png)bin3441 -> 3441 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-itemdelegate-indicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png)bin3456 -> 3456 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-itemdelegate.png (renamed from src/imports/controls/doc/images/qtlabscontrols-itemdelegate.png)bin9440 -> 9440 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-label-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-label-background.png)bin1118 -> 1118 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-label.png (renamed from src/imports/controls/doc/images/qtlabscontrols-label.png)bin1093 -> 1093 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-material-button.png (renamed from src/imports/controls/doc/images/qtlabscontrols-material-button.png)bin1272 -> 1272 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-material-dark.png (renamed from src/imports/controls/doc/images/qtlabscontrols-material-dark.png)bin4981 -> 4981 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-material.png (renamed from src/imports/controls/doc/images/qtlabscontrols-material.png)bin23669 -> 23669 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-menu-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png)bin4777 -> 4777 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-menu.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-menu.gif)bin4683 -> 4683 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-menu.png (renamed from src/imports/controls/doc/images/qtlabscontrols-menu.png)bin4821 -> 4821 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-page-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-page-wireframe.png)bin5283 -> 5283 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-pageindicator-background.pngbin0 -> 415 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-pageindicator-contentItem.pngbin0 -> 348 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-pageindicator-delegate.pngbin0 -> 498 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-pageindicator.pngbin0 -> 416 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-pane-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-frame-frame.png)bin341 -> 341 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-pane.png (renamed from src/imports/controls/doc/images/qtlabscontrols-pane.png)bin4939 -> 4939 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-popup-transformorigin.png (renamed from src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.png)bin8927 -> 8927 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-progressbar-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png)bin146 -> 146 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-progressbar-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png)bin133 -> 133 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-progressbar-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png)bin133 -> 133 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-progressbar-indeterminate.pngbin0 -> 229 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-progressbar-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png)bin133 -> 133 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png)bin3474 -> 3474 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-checked.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png)bin3411 -> 3411 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png)bin3435 -> 3435 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png)bin2897 -> 2897 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png)bin2771 -> 2771 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-indicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png)bin3337 -> 3337 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png)bin2234 -> 2234 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-radiobutton.png (renamed from src/imports/controls/doc/images/qtlabscontrols-radiobutton.png)bin3491 -> 3491 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png)bin1201 -> 1201 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png)bin1204 -> 1204 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-first-handle-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png)bin1204 -> 1204 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-first-handle.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png)bin1206 -> 1206 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png)bin1204 -> 1204 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-second-handle-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png)bin1204 -> 1204 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider-second-handle.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png)bin1365 -> 1365 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif)bin18024 -> 18024 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-rangeslider.png (renamed from src/imports/controls/doc/images/qtlabscontrols-rangeslider.png)bin1204 -> 1204 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-scrollbar-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png)bin260 -> 260 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-scrollbar-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png)bin248 -> 248 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-scrollbar.png (renamed from src/imports/controls/doc/images/qtlabscontrols-scrollbar.png)bin680 -> 680 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-scrollindicator-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png)bin147 -> 147 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-scrollindicator-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png)bin121 -> 121 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-scrollindicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-scrollindicator.png)bin387 -> 387 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-slider-background.png)bin1104 -> 1104 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png)bin1117 -> 1117 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-slider-focused.png)bin1117 -> 1117 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider-handle.png (renamed from src/imports/controls/doc/images/qtlabscontrols-slider-handle.png)bin953 -> 953 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-slider-normal.png)bin1117 -> 1117 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-slider.gif)bin16972 -> 16972 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-slider.png (renamed from src/imports/controls/doc/images/qtlabscontrols-slider.png)bin1117 -> 1117 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-spinbox-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png)bin1104 -> 1104 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-spinbox-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png)bin1178 -> 1178 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-spinbox-down.png (renamed from src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png)bin1130 -> 1130 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-spinbox-textual.png (renamed from src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png)bin1825 -> 1825 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-spinbox-up.png (renamed from src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png)bin1144 -> 1144 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-spinbox.png (renamed from src/imports/controls/doc/images/qtlabscontrols-spinbox.png)bin1149 -> 1149 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-stackview-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-stackview-wireframe.png)bin646 -> 646 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipedelegate-background.pngbin0 -> 1919 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipedelegate-behind.gifbin0 -> 248344 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipedelegate-contentItem.pngbin0 -> 1894 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipedelegate-indicator.pngbin0 -> 2407 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipedelegate-leading-trailing.gifbin0 -> 132134 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipedelegate.gifbin0 -> 123494 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipeview-indicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-swipeview-indicator.png)bin695 -> 695 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-swipeview-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-swipeview-wireframe.png)bin1583 -> 1583 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-background.png)bin2648 -> 2648 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-checked.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-checked.png)bin3124 -> 3124 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-label.png)bin2605 -> 2605 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png)bin3218 -> 3218 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-focused.png)bin2905 -> 2905 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-indicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png)bin2522 -> 2522 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch-normal.png)bin2415 -> 2415 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-switch.gif)bin3466 -> 3466 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-switch.png (renamed from src/imports/controls/doc/images/qtlabscontrols-switch.png)bin2669 -> 2669 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tabbar-wireframe.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tabbar-wireframe.png)bin609 -> 609 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tabbar.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-tabbar.gif)bin8590 -> 8590 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tabbar.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tabbar.png)bin4725 -> 4725 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tabbutton.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tabbutton.png)bin4728 -> 4728 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-textarea.png (renamed from src/imports/controls/doc/images/qtlabscontrols-textarea.png)bin2113 -> 2113 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-textfield-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-textfield-background.png)bin1976 -> 1976 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-textfield-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png)bin193 -> 193 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-textfield-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png)bin2072 -> 2072 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-textfield-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png)bin1553 -> 1553 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-textfield.png (renamed from src/imports/controls/doc/images/qtlabscontrols-textfield.png)bin2088 -> 2088 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-background.png)bin2558 -> 2558 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-checked.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-checked.png)bin1921 -> 1921 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-disabled.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-disabled.png)bin1921 -> 1921 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-focused.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-focused.png)bin1788 -> 1788 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-indicator.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-indicator.png)bin2450 -> 2450 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-label.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-label.png)bin2530 -> 2530 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-togglebutton-normal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-togglebutton-normal.png)bin1444 -> 1444 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-toolbar-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png)bin217 -> 217 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-toolbar.png (renamed from src/imports/controls/doc/images/qtlabscontrols-toolbar.png)bin4172 -> 4172 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-toolbutton-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png)bin1722 -> 1722 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-toolbutton-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png)bin1682 -> 1682 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-toolbutton.png (renamed from src/imports/controls/doc/images/qtlabscontrols-toolbutton.png)bin1683 -> 1683 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tumbler-background.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png)bin1289 -> 1289 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tumbler-contentItem.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png)bin1289 -> 1289 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tumbler-delegate.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png)bin1300 -> 1300 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tumbler-wrap.gif (renamed from src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif)bin54383 -> 54383 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-tumbler.png (renamed from src/imports/controls/doc/images/qtlabscontrols-tumbler.png)bin1123 -> 1123 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-universal-button.png (renamed from src/imports/controls/doc/images/qtlabscontrols-universal-button.png)bin2172 -> 2172 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-universal-dark.png (renamed from src/imports/controls/doc/images/qtlabscontrols-universal-dark.png)bin5450 -> 5450 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols-universal.png (renamed from src/imports/controls/doc/images/qtlabscontrols-universal.png)bin18382 -> 18382 bytes
-rw-r--r--src/imports/controls/doc/qtlabscontrols.qdocconf2
-rw-r--r--src/imports/controls/doc/snippets/qtlabscontrols-groupbox-frame.qml41
-rw-r--r--src/imports/controls/doc/snippets/qtlabscontrols-pageindicator.qml43
-rw-r--r--src/imports/controls/doc/snippets/qtlabscontrols-progressbar-indicator.qml40
-rw-r--r--src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-track.qml39
-rw-r--r--src/imports/controls/doc/snippets/qtlabscontrols-slider-background.qml37
-rw-r--r--src/imports/controls/doc/snippets/qtlabscontrols-toolbar-frame.qml38
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-busyindicator-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-busyindicator-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-busyindicator-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-busyindicator-contentItem.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-busyindicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-busyindicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button-label.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button-pressed.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button-pressed.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-button.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-button.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-checked.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-checked.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-label.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-indicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-indicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-checkbox.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-checkbox.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-combobox-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-combobox-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-combobox-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-combobox-contentItem.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-combobox-delegate.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-combobox-delegate.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-combobox-popup.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-combobox-popup.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-combobox.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-combobox.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-dial-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-dial-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-dial-handle.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-dial-handle.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-dial.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-dial.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-frame-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-frame-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-frame.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-frame.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-groupbox-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-groupbox-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-groupbox-checkable.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-groupbox-checkable.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-groupbox-label.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-groupbox-label.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-groupbox.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-groupbox.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-label.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-indicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-indicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-label-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-label-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-label.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-label.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-menu-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-menu-contentItem.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-menu.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-menu.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-background.qml38
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-contentItem.qml39
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-delegate.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-frame-frame.qml)8
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-pageindicator.qml35
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-pane-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-pane-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-pane.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-pane.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-progressbar-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-progressbar-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-progressbar-contentItem.qml39
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-progressbar-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-progressbar-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-progressbar-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-progressbar-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-checked.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-checked.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-label.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-indicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-indicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-radiobutton.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-radiobutton.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-first-handle-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-first-handle-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-first-handle.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-first-handle.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-second-handle-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-second-handle-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-second-handle.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-second-handle.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-rangeslider.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-rangeslider.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-scrollbar-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-scrollbar-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-scrollbar-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-scrollbar-handle.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-scrollbar.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-scrollbar.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator-indicator.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-slider-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-slider-track.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-slider-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-slider-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-slider-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-slider-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-slider-handle.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-slider-handle.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-slider-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-slider-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-slider.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-slider.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-spinbox-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-spinbox-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-spinbox-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-spinbox-contentItem.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-spinbox-down.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-spinbox-down.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-spinbox-textual.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-spinbox-textual.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-spinbox-up.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-spinbox-up.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-spinbox.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-spinbox.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-background.qml38
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-contentItem.qml38
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-indicator.qml40
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate.qml87
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-swipeview-indicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-swipeview-indicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-checked.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-checked.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-label.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-indicator.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-indicator.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-switch.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-switch.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-tabbar.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-tabbar.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-tabbutton.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-tabbutton.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-textarea.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-textarea.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-textfield-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-textfield-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-textfield-disabled.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-textfield-disabled.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-textfield-focused.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-textfield-focused.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-textfield-normal.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-textfield-normal.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-textfield.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-textfield.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-toolbar-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-toolbar-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-toolbar.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-toolbar.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-toolbutton-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-toolbutton-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-toolbutton-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-toolbutton-label.qml)2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-toolbutton.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-toolbutton.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-tumbler-background.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-tumbler-background.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-tumbler-contentItem.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-tumbler-contentItem.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-tumbler-delegate.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-tumbler-delegate.qml)0
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols-tumbler.qml (renamed from src/imports/controls/doc/snippets/qtlabscontrols-tumbler.qml)0
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-buttons.qdoc10
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-containers.qdoc18
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-customize.qdoc253
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-default.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-differences.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-examples.qdoc12
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-fileselectors.qdoc141
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-index.qdoc1
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-indicators.qdoc8
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-input.qdoc14
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-material.qdoc27
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-menus.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-navigation.qdoc6
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-styles.qdoc40
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-universal.qdoc27
-rw-r--r--src/imports/controls/material/Button.qml17
-rw-r--r--src/imports/controls/material/CheckBox.qml21
-rw-r--r--src/imports/controls/material/ComboBox.qml1
-rw-r--r--src/imports/controls/material/Frame.qml11
-rw-r--r--src/imports/controls/material/GroupBox.qml10
-rw-r--r--src/imports/controls/material/ItemDelegate.qml21
-rw-r--r--src/imports/controls/material/MenuItem.qml21
-rw-r--r--src/imports/controls/material/Pane.qml2
-rw-r--r--src/imports/controls/material/ProgressBar.qml15
-rw-r--r--src/imports/controls/material/RadioButton.qml21
-rw-r--r--src/imports/controls/material/RangeSlider.qml11
-rw-r--r--src/imports/controls/material/ScrollBar.qml16
-rw-r--r--src/imports/controls/material/ScrollIndicator.qml16
-rw-r--r--src/imports/controls/material/Slider.qml11
-rw-r--r--src/imports/controls/material/SpinBox.qml1
-rw-r--r--src/imports/controls/material/StackView.qml14
-rw-r--r--src/imports/controls/material/SwipeDelegate.qml168
-rw-r--r--src/imports/controls/material/Switch.qml21
-rw-r--r--src/imports/controls/material/TabBar.qml2
-rw-r--r--src/imports/controls/material/TabButton.qml17
-rw-r--r--src/imports/controls/material/TextArea.qml2
-rw-r--r--src/imports/controls/material/TextField.qml2
-rw-r--r--src/imports/controls/material/ToolButton.qml17
-rw-r--r--src/imports/controls/material/material.pri1
-rw-r--r--src/imports/controls/material/material.pro8
-rw-r--r--src/imports/controls/material/qmldir4
-rw-r--r--src/imports/controls/material/qquickmaterialprogressring.cpp29
-rw-r--r--src/imports/controls/material/qquickmaterialprogressring_p.h10
-rw-r--r--src/imports/controls/material/qquickmaterialprogressstrip.cpp24
-rw-r--r--src/imports/controls/material/qquickmaterialprogressstrip_p.h10
-rw-r--r--src/imports/controls/material/qquickmaterialstyle.cpp166
-rw-r--r--src/imports/controls/material/qquickmaterialstyle_p.h16
-rw-r--r--src/imports/controls/material/qquickmaterialtheme.cpp7
-rw-r--r--src/imports/controls/material/qquickmaterialtheme_p.h16
-rw-r--r--src/imports/controls/material/qtquickmaterialstyleplugin.cpp (renamed from src/imports/controls/material/qtlabsmaterialstyleplugin.cpp)45
-rw-r--r--src/imports/controls/material/qtquickmaterialstyleplugin.qrc (renamed from src/imports/controls/material/qtlabsmaterialstyleplugin.qrc)0
-rw-r--r--src/imports/controls/plugins.qmltypes38
-rw-r--r--src/imports/controls/qmldir4
-rw-r--r--src/imports/controls/qquickbusyindicatorring.cpp14
-rw-r--r--src/imports/controls/qquickbusyindicatorring_p.h10
-rw-r--r--src/imports/controls/qquickprogressstrip.cpp21
-rw-r--r--src/imports/controls/qquickprogressstrip_p.h10
-rw-r--r--src/imports/controls/qtlabscontrolsplugin.cpp130
-rw-r--r--src/imports/controls/qtquickcontrolsplugin.cpp149
-rw-r--r--src/imports/controls/qtquickcontrolsplugin.qrc (renamed from src/imports/controls/qtlabscontrolsplugin.qrc)0
-rw-r--r--src/imports/controls/universal/Button.qml17
-rw-r--r--src/imports/controls/universal/CheckBox.qml20
-rw-r--r--src/imports/controls/universal/ComboBox.qml1
-rw-r--r--src/imports/controls/universal/Frame.qml9
-rw-r--r--src/imports/controls/universal/GroupBox.qml8
-rw-r--r--src/imports/controls/universal/ItemDelegate.qml20
-rw-r--r--src/imports/controls/universal/MenuItem.qml24
-rw-r--r--src/imports/controls/universal/ProgressBar.qml36
-rw-r--r--src/imports/controls/universal/RadioButton.qml20
-rw-r--r--src/imports/controls/universal/RangeSlider.qml18
-rw-r--r--src/imports/controls/universal/ScrollBar.qml20
-rw-r--r--src/imports/controls/universal/ScrollIndicator.qml18
-rw-r--r--src/imports/controls/universal/Slider.qml10
-rw-r--r--src/imports/controls/universal/SpinBox.qml1
-rw-r--r--src/imports/controls/universal/StackView.qml8
-rw-r--r--src/imports/controls/universal/SwipeDelegate.qml116
-rw-r--r--src/imports/controls/universal/Switch.qml20
-rw-r--r--src/imports/controls/universal/TabButton.qml17
-rw-r--r--src/imports/controls/universal/TextArea.qml2
-rw-r--r--src/imports/controls/universal/TextField.qml2
-rw-r--r--src/imports/controls/universal/ToolButton.qml17
-rw-r--r--src/imports/controls/universal/qmldir4
-rw-r--r--src/imports/controls/universal/qquickuniversalfocusrectangle_p.h4
-rw-r--r--src/imports/controls/universal/qquickuniversalprogressring.cpp38
-rw-r--r--src/imports/controls/universal/qquickuniversalprogressring_p.h10
-rw-r--r--src/imports/controls/universal/qquickuniversalprogressstrip.cpp84
-rw-r--r--src/imports/controls/universal/qquickuniversalprogressstrip_p.h23
-rw-r--r--src/imports/controls/universal/qquickuniversalstyle.cpp86
-rw-r--r--src/imports/controls/universal/qquickuniversalstyle_p.h8
-rw-r--r--src/imports/controls/universal/qquickuniversaltheme.cpp4
-rw-r--r--src/imports/controls/universal/qquickuniversaltheme_p.h15
-rw-r--r--src/imports/controls/universal/qtquickuniversalstyleplugin.cpp (renamed from src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp)44
-rw-r--r--src/imports/controls/universal/qtquickuniversalstyleplugin.qrc (renamed from src/imports/controls/universal/qtlabsuniversalstyleplugin.qrc)0
-rw-r--r--src/imports/controls/universal/universal.pri3
-rw-r--r--src/imports/controls/universal/universal.pro8
-rw-r--r--src/imports/templates/plugins.qmltypes38
-rw-r--r--src/imports/templates/qmldir4
-rw-r--r--src/imports/templates/qtquicktemplatesplugin.cpp (renamed from src/imports/templates/qtlabstemplatesplugin.cpp)98
-rw-r--r--src/imports/templates/templates.pro6
-rw-r--r--src/templates/qquickabstractbutton.cpp139
-rw-r--r--src/templates/qquickabstractbutton_p.h33
-rw-r--r--src/templates/qquickabstractbutton_p_p.h5
-rw-r--r--src/templates/qquickapplicationwindow.cpp190
-rw-r--r--src/templates/qquickapplicationwindow_p.h25
-rw-r--r--src/templates/qquickbusyindicator.cpp13
-rw-r--r--src/templates/qquickbusyindicator_p.h8
-rw-r--r--src/templates/qquickbutton.cpp19
-rw-r--r--src/templates/qquickbutton_p.h8
-rw-r--r--src/templates/qquickbuttongroup.cpp54
-rw-r--r--src/templates/qquickbuttongroup_p.h10
-rw-r--r--src/templates/qquickcheckbox.cpp46
-rw-r--r--src/templates/qquickcheckbox_p.h14
-rw-r--r--src/templates/qquickcombobox.cpp173
-rw-r--r--src/templates/qquickcombobox_p.h33
-rw-r--r--src/templates/qquickcontainer.cpp31
-rw-r--r--src/templates/qquickcontainer_p.h10
-rw-r--r--src/templates/qquickcontainer_p_p.h12
-rw-r--r--src/templates/qquickcontrol.cpp240
-rw-r--r--src/templates/qquickcontrol_p.h52
-rw-r--r--src/templates/qquickcontrol_p_p.h21
-rw-r--r--src/templates/qquickdial.cpp100
-rw-r--r--src/templates/qquickdial_p.h26
-rw-r--r--src/templates/qquickdrawer.cpp104
-rw-r--r--src/templates/qquickdrawer_p.h20
-rw-r--r--src/templates/qquickframe.cpp41
-rw-r--r--src/templates/qquickframe_p.h13
-rw-r--r--src/templates/qquickframe_p_p.h10
-rw-r--r--src/templates/qquickgroupbox.cpp44
-rw-r--r--src/templates/qquickgroupbox_p.h8
-rw-r--r--src/templates/qquickitemdelegate.cpp4
-rw-r--r--src/templates/qquickitemdelegate_p.h10
-rw-r--r--src/templates/qquicklabel.cpp39
-rw-r--r--src/templates/qquicklabel_p.h12
-rw-r--r--src/templates/qquicklabel_p_p.h4
-rw-r--r--src/templates/qquickmenu.cpp145
-rw-r--r--src/templates/qquickmenu_p.h13
-rw-r--r--src/templates/qquickmenu_p_p.h21
-rw-r--r--src/templates/qquickmenuitem_p.h10
-rw-r--r--src/templates/qquickoverlay.cpp103
-rw-r--r--src/templates/qquickoverlay_p.h19
-rw-r--r--src/templates/qquickpage.cpp96
-rw-r--r--src/templates/qquickpage_p.h14
-rw-r--r--src/templates/qquickpageindicator.cpp55
-rw-r--r--src/templates/qquickpageindicator_p.h18
-rw-r--r--src/templates/qquickpane.cpp32
-rw-r--r--src/templates/qquickpane_p.h10
-rw-r--r--src/templates/qquickpane_p_p.h4
-rw-r--r--src/templates/qquickpopup.cpp525
-rw-r--r--src/templates/qquickpopup_p.h46
-rw-r--r--src/templates/qquickpopup_p_p.h64
-rw-r--r--src/templates/qquickpresshandler.cpp (renamed from src/templates/qquickpressandholdhelper.cpp)22
-rw-r--r--src/templates/qquickpresshandler_p_p.h (renamed from src/templates/qquickpressandholdhelper_p.h)10
-rw-r--r--src/templates/qquickprogressbar.cpp99
-rw-r--r--src/templates/qquickprogressbar_p.h17
-rw-r--r--src/templates/qquickradiobutton.cpp10
-rw-r--r--src/templates/qquickradiobutton_p.h10
-rw-r--r--src/templates/qquickrangeslider.cpp144
-rw-r--r--src/templates/qquickrangeslider_p.h33
-rw-r--r--src/templates/qquickscrollbar.cpp325
-rw-r--r--src/templates/qquickscrollbar_p.h32
-rw-r--r--src/templates/qquickscrollindicator.cpp221
-rw-r--r--src/templates/qquickscrollindicator_p.h15
-rw-r--r--src/templates/qquickslider.cpp155
-rw-r--r--src/templates/qquickslider_p.h33
-rw-r--r--src/templates/qquickspinbox.cpp150
-rw-r--r--src/templates/qquickspinbox_p.h40
-rw-r--r--src/templates/qquickstackview.cpp100
-rw-r--r--src/templates/qquickstackview_p.cpp99
-rw-r--r--src/templates/qquickstackview_p.h16
-rw-r--r--src/templates/qquickstackview_p_p.h10
-rw-r--r--src/templates/qquickswipedelegate.cpp855
-rw-r--r--src/templates/qquickswipedelegate_p.h145
-rw-r--r--src/templates/qquickswipeview.cpp44
-rw-r--r--src/templates/qquickswipeview_p.h12
-rw-r--r--src/templates/qquickswitch.cpp43
-rw-r--r--src/templates/qquickswitch_p.h12
-rw-r--r--src/templates/qquicktabbar.cpp48
-rw-r--r--src/templates/qquicktabbar_p.h33
-rw-r--r--src/templates/qquicktabbutton.cpp6
-rw-r--r--src/templates/qquicktabbutton_p.h10
-rw-r--r--src/templates/qquicktextarea.cpp90
-rw-r--r--src/templates/qquicktextarea_p.h30
-rw-r--r--src/templates/qquicktextarea_p_p.h16
-rw-r--r--src/templates/qquicktextfield.cpp98
-rw-r--r--src/templates/qquicktextfield_p.h30
-rw-r--r--src/templates/qquicktextfield_p_p.h16
-rw-r--r--src/templates/qquicktoolbar.cpp47
-rw-r--r--src/templates/qquicktoolbar_p.h27
-rw-r--r--src/templates/qquicktoolbutton.cpp2
-rw-r--r--src/templates/qquicktoolbutton_p.h8
-rw-r--r--src/templates/qquicktumbler.cpp68
-rw-r--r--src/templates/qquicktumbler_p.h16
-rw-r--r--src/templates/qquickvelocitycalculator.cpp108
-rw-r--r--src/templates/qquickvelocitycalculator_p_p.h78
-rw-r--r--src/templates/qtquicktemplatesglobal_p.h (renamed from src/templates/qtlabstemplatesglobal_p.h)14
-rw-r--r--src/templates/templates.pri12
-rw-r--r--src/templates/templates.pro6
531 files changed, 7014 insertions, 4005 deletions
diff --git a/src/controls/controls.pri b/src/controls/controls.pri
index 005ee839..a0c82fce 100644
--- a/src/controls/controls.pri
+++ b/src/controls/controls.pri
@@ -1,12 +1,16 @@
HEADERS += \
+ $$PWD/qquickcolorimageprovider_p.h \
$$PWD/qquickproxytheme_p.h \
- $$PWD/qquickstyle_p.h \
+ $$PWD/qquickstyle.h \
+ $$PWD/qquickstyleattached_p.h \
$$PWD/qquickstyleselector_p.h \
$$PWD/qquickstyleselector_p_p.h \
$$PWD/qquickpaddedrectangle_p.h
SOURCES += \
+ $$PWD/qquickcolorimageprovider.cpp \
$$PWD/qquickproxytheme.cpp \
$$PWD/qquickstyle.cpp \
+ $$PWD/qquickstyleattached.cpp \
$$PWD/qquickstyleselector.cpp \
$$PWD/qquickpaddedrectangle.cpp
diff --git a/src/controls/controls.pro b/src/controls/controls.pro
index cb9a8683..16f2005c 100644
--- a/src/controls/controls.pro
+++ b/src/controls/controls.pro
@@ -1,11 +1,14 @@
-TARGET = QtLabsControls
-MODULE = labscontrols
-CONFIG += static internal_module
+TARGET = QtQuickControls
+MODULE = quickcontrols
QT += quick
-QT_PRIVATE += core-private gui-private qml-private quick-private labstemplates-private
+QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
+HEADERS += \
+ $$PWD/qtquickcontrolsglobal.h
+ $$PWD/qtquickcontrolsglobal_p.h
+
include(controls.pri)
load(qt_module)
diff --git a/src/imports/controls/universal/qquickuniversalimageprovider.cpp b/src/controls/qquickcolorimageprovider.cpp
index 7cb7b926..582b73ed 100644
--- a/src/imports/controls/universal/qquickuniversalimageprovider.cpp
+++ b/src/controls/qquickcolorimageprovider.cpp
@@ -34,7 +34,7 @@
**
****************************************************************************/
-#include "qquickuniversalimageprovider_p.h"
+#include "qquickcolorimageprovider_p.h"
#include <QtCore/qdebug.h>
#include <QtGui/qpainter.h>
@@ -44,11 +44,12 @@
QT_BEGIN_NAMESPACE
-QQuickUniversalImageProvider::QQuickUniversalImageProvider() : QQuickImageProvider(Image)
+QQuickColorImageProvider::QQuickColorImageProvider(const QString &path)
+ : QQuickImageProvider(Image), m_path(path)
{
}
-QImage QQuickUniversalImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
+QImage QQuickColorImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
{
Q_UNUSED(requestedSize);
@@ -56,11 +57,11 @@ QImage QQuickUniversalImageProvider::requestImage(const QString &id, QSize *size
QString name = id.left(sep);
QString color = id.mid(sep + 1);
qreal dpr = qApp->primaryScreen()->devicePixelRatio();
- QString file = qt_findAtNxFile(QStringLiteral(":/qt-project.org/imports/Qt/labs/controls/universal/images/") + name + QStringLiteral(".png"), dpr);
+ QString file = qt_findAtNxFile(m_path + QLatin1Char('/') + name + QStringLiteral(".png"), dpr);
QImage image(file);
if (image.isNull()) {
- qWarning() << "QQuickUniversalImageProvider: unknown id:" << id;
+ qWarning() << "QQuickColorImageProvider: unknown id:" << id;
return QImage();
}
diff --git a/src/imports/controls/universal/qquickuniversalimageprovider_p.h b/src/controls/qquickcolorimageprovider_p.h
index 15648157..475449d5 100644
--- a/src/imports/controls/universal/qquickuniversalimageprovider_p.h
+++ b/src/controls/qquickcolorimageprovider_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKUNIVERSALIMAGEPROVIDER_P_H
-#define QQUICKUNIVERSALIMAGEPROVIDER_P_H
+#ifndef QQUICKCOLORIMAGEPROVIDER_P_H
+#define QQUICKCOLORIMAGEPROVIDER_P_H
//
// W A R N I N G
@@ -49,17 +49,21 @@
//
#include <QtQuick/qquickimageprovider.h>
+#include <QtQuickControls/private/qtquickcontrolsglobal_p.h>
QT_BEGIN_NAMESPACE
-class QQuickUniversalImageProvider : public QQuickImageProvider
+class Q_QUICKCONTROLS_PRIVATE_EXPORT QQuickColorImageProvider : public QQuickImageProvider
{
public:
- QQuickUniversalImageProvider();
+ QQuickColorImageProvider(const QString &path);
- QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) Q_DECL_OVERRIDE;
+ QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) override;
+
+private:
+ QString m_path;
};
QT_END_NAMESPACE
-#endif // QQUICKUNIVERSALIMAGEPROVIDER_P_H
+#endif // QQUICKOCOLORIMAGEPROVIDER_P_H
diff --git a/src/controls/qquickpaddedrectangle_p.h b/src/controls/qquickpaddedrectangle_p.h
index 5c0a8919..b8c8dc4a 100644
--- a/src/controls/qquickpaddedrectangle_p.h
+++ b/src/controls/qquickpaddedrectangle_p.h
@@ -49,10 +49,11 @@
//
#include <QtQuick/private/qquickrectangle_p.h>
+#include <QtQuickControls/private/qtquickcontrolsglobal_p.h>
QT_BEGIN_NAMESPACE
-class QQuickPaddedRectangle : public QQuickRectangle
+class Q_QUICKCONTROLS_PRIVATE_EXPORT QQuickPaddedRectangle : public QQuickRectangle
{
Q_OBJECT
Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL)
@@ -62,7 +63,7 @@ class QQuickPaddedRectangle : public QQuickRectangle
Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL)
public:
- QQuickPaddedRectangle(QQuickItem *parent = Q_NULLPTR);
+ QQuickPaddedRectangle(QQuickItem *parent = nullptr);
qreal padding() const;
void setPadding(qreal padding);
@@ -92,7 +93,7 @@ Q_SIGNALS:
void bottomPaddingChanged();
protected:
- QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
private:
void setTopPadding(qreal padding, bool has);
diff --git a/src/controls/qquickproxytheme.cpp b/src/controls/qquickproxytheme.cpp
index dccd7f22..03ccb3b2 100644
--- a/src/controls/qquickproxytheme.cpp
+++ b/src/controls/qquickproxytheme.cpp
@@ -36,19 +36,21 @@
#include "qquickproxytheme_p.h"
-#include <QtGui/qguiapplication.h>
+#include <QtGui/private/qguiapplication_p.h>
#include <QtGui/qpixmap.h>
#include <QtGui/qfont.h>
QT_BEGIN_NAMESPACE
QQuickProxyTheme::QQuickProxyTheme(QPlatformTheme *theme)
- : m_theme(theme)
+ : m_theme(theme ? theme : QGuiApplicationPrivate::platform_theme)
{
}
QQuickProxyTheme::~QQuickProxyTheme()
{
+ if (QGuiApplicationPrivate::platform_theme == this)
+ QGuiApplicationPrivate::platform_theme = m_theme;
}
QPlatformTheme *QQuickProxyTheme::theme() const
@@ -60,48 +62,42 @@ QPlatformMenuItem *QQuickProxyTheme::createPlatformMenuItem() const
{
if (m_theme)
return m_theme->createPlatformMenuItem();
- else
- return QPlatformTheme::createPlatformMenuItem();
+ return QPlatformTheme::createPlatformMenuItem();
}
QPlatformMenu *QQuickProxyTheme::createPlatformMenu() const
{
if (m_theme)
return m_theme->createPlatformMenu();
- else
- return QPlatformTheme::createPlatformMenu();
+ return QPlatformTheme::createPlatformMenu();
}
QPlatformMenuBar *QQuickProxyTheme::createPlatformMenuBar() const
{
if (m_theme)
return m_theme->createPlatformMenuBar();
- else
- return QPlatformTheme::createPlatformMenuBar();
+ return QPlatformTheme::createPlatformMenuBar();
}
void QQuickProxyTheme::showPlatformMenuBar()
{
if (m_theme)
m_theme->showPlatformMenuBar();
- else
- QPlatformTheme::showPlatformMenuBar();
+ QPlatformTheme::showPlatformMenuBar();
}
bool QQuickProxyTheme::usePlatformNativeDialog(QPlatformTheme::DialogType type) const
{
if (m_theme)
return m_theme->usePlatformNativeDialog(type);
- else
- return QPlatformTheme::usePlatformNativeDialog(type);
+ return QPlatformTheme::usePlatformNativeDialog(type);
}
QPlatformDialogHelper *QQuickProxyTheme::createPlatformDialogHelper(QPlatformTheme::DialogType type) const
{
if (m_theme)
return m_theme->createPlatformDialogHelper(type);
- else
- return QPlatformTheme::createPlatformDialogHelper(type);
+ return QPlatformTheme::createPlatformDialogHelper(type);
}
#ifndef QT_NO_SYSTEMTRAYICON
@@ -109,8 +105,7 @@ QPlatformSystemTrayIcon *QQuickProxyTheme::createPlatformSystemTrayIcon() const
{
if (m_theme)
return m_theme->createPlatformSystemTrayIcon();
- else
- return QPlatformTheme::createPlatformSystemTrayIcon();
+ return QPlatformTheme::createPlatformSystemTrayIcon();
}
#endif
@@ -118,64 +113,56 @@ const QPalette *QQuickProxyTheme::palette(QPlatformTheme::Palette type) const
{
if (m_theme)
return m_theme->palette(type);
- else
- return QPlatformTheme::palette(type);
+ return QPlatformTheme::palette(type);
}
const QFont *QQuickProxyTheme::font(QPlatformTheme::Font type) const
{
if (m_theme)
return m_theme->font(type);
- else
- return QPlatformTheme::font(type);
+ return QPlatformTheme::font(type);
}
QVariant QQuickProxyTheme::themeHint(QPlatformTheme::ThemeHint hint) const
{
if (m_theme)
return m_theme->themeHint(hint);
- else
- return QPlatformTheme::themeHint(hint);
+ return QPlatformTheme::themeHint(hint);
}
QPixmap QQuickProxyTheme::standardPixmap(QPlatformTheme::StandardPixmap sp, const QSizeF &size) const
{
if (m_theme)
return m_theme->standardPixmap(sp, size);
- else
- return QPlatformTheme::standardPixmap(sp, size);
+ return QPlatformTheme::standardPixmap(sp, size);
}
QPixmap QQuickProxyTheme::fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, QPlatformTheme::IconOptions iconOptions) const
{
if (m_theme)
return m_theme->fileIconPixmap(fileInfo, size, iconOptions);
- else
- return QPlatformTheme::fileIconPixmap(fileInfo, size, iconOptions);
+ return QPlatformTheme::fileIconPixmap(fileInfo, size, iconOptions);
}
QIconEngine *QQuickProxyTheme::createIconEngine(const QString &iconName) const
{
if (m_theme)
return m_theme->createIconEngine(iconName);
- else
- return QPlatformTheme::createIconEngine(iconName);
+ return QPlatformTheme::createIconEngine(iconName);
}
QList<QKeySequence> QQuickProxyTheme::keyBindings(QKeySequence::StandardKey key) const
{
if (m_theme)
return m_theme->keyBindings(key);
- else
- return QPlatformTheme::keyBindings(key);
+ return QPlatformTheme::keyBindings(key);
}
QString QQuickProxyTheme::standardButtonText(int button) const
{
if (m_theme)
return m_theme->standardButtonText(button);
- else
- return QPlatformTheme::standardButtonText(button);
+ return QPlatformTheme::standardButtonText(button);
}
QT_END_NAMESPACE
diff --git a/src/controls/qquickproxytheme_p.h b/src/controls/qquickproxytheme_p.h
index 47f931b5..69446669 100644
--- a/src/controls/qquickproxytheme_p.h
+++ b/src/controls/qquickproxytheme_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKPROXYTHEME_H
-#define QQUICKPROXYTHEME_H
+#ifndef QQUICKPROXYTHEME_P_H
+#define QQUICKPROXYTHEME_P_H
//
// W A R N I N G
@@ -49,45 +49,45 @@
//
#include <QtGui/qpa/qplatformtheme.h>
+#include <QtQuickControls/private/qtquickcontrolsglobal_p.h>
QT_BEGIN_NAMESPACE
-class QQuickProxyTheme : public QPlatformTheme
+class Q_QUICKCONTROLS_PRIVATE_EXPORT QQuickProxyTheme : public QPlatformTheme
{
public:
- QQuickProxyTheme(QPlatformTheme *theme);
-
+ explicit QQuickProxyTheme(QPlatformTheme *theme = nullptr);
~QQuickProxyTheme();
QPlatformTheme* theme() const;
- QPlatformMenuItem* createPlatformMenuItem() const Q_DECL_OVERRIDE;
- QPlatformMenu* createPlatformMenu() const Q_DECL_OVERRIDE;
- QPlatformMenuBar* createPlatformMenuBar() const Q_DECL_OVERRIDE;
- void showPlatformMenuBar() Q_DECL_OVERRIDE;
+ QPlatformMenuItem* createPlatformMenuItem() const override;
+ QPlatformMenu* createPlatformMenu() const override;
+ QPlatformMenuBar* createPlatformMenuBar() const override;
+ void showPlatformMenuBar() override;
- bool usePlatformNativeDialog(DialogType type) const Q_DECL_OVERRIDE;
- QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const Q_DECL_OVERRIDE;
+ bool usePlatformNativeDialog(DialogType type) const override;
+ QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const override;
#ifndef QT_NO_SYSTEMTRAYICON
- QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const Q_DECL_OVERRIDE;
+ QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const override;
#endif
- const QPalette *palette(Palette type = SystemPalette) const Q_DECL_OVERRIDE;
+ const QPalette *palette(Palette type = SystemPalette) const override;
- const QFont *font(Font type = SystemFont) const Q_DECL_OVERRIDE;
+ const QFont *font(Font type = SystemFont) const override;
- QVariant themeHint(ThemeHint hint) const Q_DECL_OVERRIDE;
+ QVariant themeHint(ThemeHint hint) const override;
- QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const Q_DECL_OVERRIDE;
+ QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const override;
QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size,
- QPlatformTheme::IconOptions iconOptions = 0) const Q_DECL_OVERRIDE;
+ QPlatformTheme::IconOptions iconOptions = 0) const override;
- QIconEngine *createIconEngine(const QString &iconName) const Q_DECL_OVERRIDE;
+ QIconEngine *createIconEngine(const QString &iconName) const override;
- QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const Q_DECL_OVERRIDE;
+ QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const override;
- QString standardButtonText(int button) const Q_DECL_OVERRIDE;
+ QString standardButtonText(int button) const override;
private:
QPlatformTheme *m_theme;
@@ -95,4 +95,4 @@ private:
QT_END_NAMESPACE
-#endif // QQUICKPROXYTHEME_H
+#endif // QQUICKPROXYTHEME_P_H
diff --git a/src/controls/qquickstyle.cpp b/src/controls/qquickstyle.cpp
index 76cb24cc..e6be5efd 100644
--- a/src/controls/qquickstyle.cpp
+++ b/src/controls/qquickstyle.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2015 The Qt Company Ltd.
+** Copyright (C) 2016 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
@@ -34,196 +34,135 @@
**
****************************************************************************/
-#include "qquickstyle_p.h"
+#include "qquickstyle.h"
+#include "qquickstyleattached_p.h"
-#include <QtCore/qfile.h>
#include <QtCore/qsettings.h>
-#include <QtCore/qfileselector.h>
-#include <QtQuick/private/qquickitem_p.h>
-#include <QtLabsTemplates/private/qquickpopup_p.h>
+#include <QtGui/private/qguiapplication_p.h>
+#include <QtQml/private/qqmlmetatype_p.h>
+#include <QtQml/qqmlfile.h>
QT_BEGIN_NAMESPACE
-static QQuickStyle *attachedStyle(const QMetaObject *type, QObject *object, bool create = false)
-{
- if (!object)
- return Q_NULLPTR;
- int idx = -1;
- return qobject_cast<QQuickStyle *>(qmlAttachedPropertiesObject(&idx, object, type, create));
-}
+/*!
+ \class QQuickStyle
+ \brief The QQQuickStyle class allows configuring the application style.
+ \inmodule QtLabsControls
-static QQuickStyle *findParentStyle(const QMetaObject *type, QObject *object)
-{
- QQuickItem *item = qobject_cast<QQuickItem *>(object);
- if (item) {
- // lookup parent items and popups
- QQuickItem *parent = item->parentItem();
- while (parent) {
- QQuickStyle *style = attachedStyle(type, parent);
- if (style)
- return style;
-
- QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent->parent());
- if (popup)
- return attachedStyle(type, popup);
-
- parent = parent->parentItem();
- }
+ QQuickStyle provides API for querying and configuring the application
+ \l {Styling Qt Labs Controls}{styles} of Qt Labs Controls.
- // fallback to item's window
- QQuickStyle *style = attachedStyle(type, item->window());
- if (style)
- return style;
- } else {
- // lookup popup's window
- QQuickPopup *popup = qobject_cast<QQuickPopup *>(object);
- if (popup)
- return attachedStyle(type, popup->popupItem()->window());
- }
+ \code
+ #include <QGuiApplication>
+ #include <QQmlApplicationEngine>
+ #include <QQuickStyle>
- // lookup parent window
- QQuickWindow *window = qobject_cast<QQuickWindow *>(object);
- if (window) {
- QQuickWindow *parentWindow = qobject_cast<QQuickWindow *>(window->parent());
- if (parentWindow) {
- QQuickStyle *style = attachedStyle(type, window);
- if (style)
- return style;
- }
- }
+ int main(int argc, char *argv[])
+ {
+ QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QGuiApplication app(argc, argv);
- // fallback to engine (global)
- if (object) {
- QQmlEngine *engine = qmlEngine(object);
- if (engine) {
- QByteArray name = QByteArray("_q_") + type->className();
- QQuickStyle *style = engine->property(name).value<QQuickStyle*>();
- if (!style) {
- style = attachedStyle(type, engine, true);
- engine->setProperty(name, QVariant::fromValue(style));
- }
- return style;
- }
+ QQuickStyle::setStyle("Material");
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl("qrc:/main.qml"));
+
+ return app.exec();
}
+ \endcode
- return Q_NULLPTR;
-}
+ \note The style must be configured \b before loading QML that imports
+ Qt Labs Controls. It is not possible to change the style after the QML
+ types have been registered.
+
+ \sa {Styling Qt Labs Controls}
+*/
-static QList<QQuickStyle *> findChildStyles(const QMetaObject *type, QObject *object)
+struct QQuickStyleSpec
{
- QList<QQuickStyle *> children;
-
- QQuickItem *item = qobject_cast<QQuickItem *>(object);
- if (!item) {
- QQuickWindow *window = qobject_cast<QQuickWindow *>(object);
- if (window) {
- item = window->contentItem();
-
- foreach (QObject *child, window->children()) {
- QQuickWindow *childWindow = qobject_cast<QQuickWindow *>(child);
- if (childWindow) {
- QQuickStyle *style = attachedStyle(type, childWindow);
- if (style)
- children += style;
- }
- }
- }
- }
+ QQuickStyleSpec() : resolved(false) { }
- if (item) {
- foreach (QQuickItem *child, item->childItems()) {
- QQuickStyle *style = attachedStyle(type, child);
- if (style)
- children += style;
- else
- children += findChildStyles(type, child);
- }
+ QString name()
+ {
+ if (!resolved)
+ resolve();
+ return style.mid(style.lastIndexOf(QLatin1Char('/')) + 1);
}
- return children;
-}
+ QString path()
+ {
+ if (!resolved)
+ resolve();
+ QString s = style;
+ if (QQmlFile::isLocalFile(s))
+ s = QQmlFile::urlToLocalFileOrQrc(s);
+ return s.left(s.lastIndexOf(QLatin1Char('/')) + 1);
+ }
-QQuickStyle::QQuickStyle(QObject *parent) : QObject(parent)
-{
- QQuickItem *item = qobject_cast<QQuickItem *>(parent);
- if (!item) {
- QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent);
- if (popup)
- item = popup->popupItem();
+ void setStyle(const QString &s)
+ {
+ style = s;
+ resolved = !s.isEmpty();
}
- if (item)
- QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Parent);
-}
+ void resolve()
+ {
+ style = QGuiApplicationPrivate::styleOverride;
+ if (style.isEmpty())
+ style = QString::fromLatin1(qgetenv("QT_LABS_CONTROLS_STYLE"));
+ if (style.isEmpty()) {
+ QSharedPointer<QSettings> settings = QQuickStyleAttached::settings(QStringLiteral("Controls"));
+ if (settings)
+ style = settings->value(QStringLiteral("Style")).toString();
+ }
+ resolved = QGuiApplication::instance();
+ }
-QQuickStyle::~QQuickStyle()
-{
- QQuickItem *item = qobject_cast<QQuickItem *>(parent());
- if (item)
- QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Parent);
+ bool resolved;
+ QString style;
+};
- setParentStyle(Q_NULLPTR);
-}
+Q_GLOBAL_STATIC(QQuickStyleSpec, styleSpec)
-QSharedPointer<QSettings> QQuickStyle::settings(const QString &group)
-{
-#ifndef QT_NO_SETTINGS
- const QString filePath = QStringLiteral(":/qtlabscontrols.conf");
- if (QFile::exists(filePath)) {
- QFileSelector selector;
- QSettings *settings = new QSettings(selector.select(filePath), QSettings::IniFormat);
- if (!group.isEmpty())
- settings->beginGroup(group);
- return QSharedPointer<QSettings>(settings);
- }
-#endif // QT_NO_SETTINGS
- return QSharedPointer<QSettings>();
-}
+/*!
+ Returns the name of the application style.
-QList<QQuickStyle *> QQuickStyle::childStyles() const
+ \note The application style can be specified by passing a \c -style command
+ line argument. Therefore \c name() may not return a fully resolved
+ value if called before constructing a QGuiApplication.
+*/
+QString QQuickStyle::name()
{
- return m_childStyles;
+ return styleSpec()->name();
}
-QQuickStyle *QQuickStyle::parentStyle() const
-{
- return m_parentStyle;
-}
+/*!
+ Returns the path of an overridden application style, or an empty
+ string if the style is one of the built-in Qt Labs Controls styles.
-void QQuickStyle::setParentStyle(QQuickStyle *style)
+ \note The application style can be specified by passing a \c -style command
+ line argument. Therefore \c path() may not return a fully resolved
+ value if called before constructing a QGuiApplication.
+*/
+QString QQuickStyle::path()
{
- if (m_parentStyle != style) {
- QQuickStyle *oldParent = m_parentStyle;
- if (m_parentStyle)
- m_parentStyle->m_childStyles.removeOne(this);
- m_parentStyle = style;
- if (style)
- style->m_childStyles.append(this);
- parentStyleChange(style, oldParent);
- }
+ return styleSpec()->path();
}
-void QQuickStyle::init()
-{
- QQuickStyle *parentStyle = findParentStyle(metaObject(), parent());
- if (parentStyle)
- setParentStyle(parentStyle);
-
- QList<QQuickStyle *> children = findChildStyles(metaObject(), parent());
- foreach (QQuickStyle *child, children)
- child->setParentStyle(this);
-}
+/*!
+ Sets the application style.
-void QQuickStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent)
+ \note The style must be configured \b before loading QML that imports Qt Labs Controls.
+ It is not possible to change the style after the QML types have been registered.
+*/
+void QQuickStyle::setStyle(const QString &style)
{
- Q_UNUSED(newParent);
- Q_UNUSED(oldParent);
-}
+ if (QQmlMetaType::isModule(QStringLiteral("Qt.labs.controls"), 1, 0)) {
+ qWarning() << "ERROR: QQuickStyle::setStyle() must be called before loading QML that imports Qt Labs Controls.";
+ return;
+ }
-void QQuickStyle::itemParentChanged(QQuickItem *item, QQuickItem *parent)
-{
- Q_UNUSED(parent);
- setParentStyle(findParentStyle(metaObject(), item));
+ styleSpec()->setStyle(style);
}
QT_END_NAMESPACE
diff --git a/src/controls/qquickstyle.h b/src/controls/qquickstyle.h
new file mode 100644
index 00000000..6946a214
--- /dev/null
+++ b/src/controls/qquickstyle.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKSTYLE_H
+#define QQUICKSTYLE_H
+
+#include <QtCore/qurl.h>
+#include <QtCore/qstring.h>
+#include <QtQuickControls/qtquickcontrolsglobal.h>
+
+QT_BEGIN_NAMESPACE
+
+class Q_QUICKCONTROLS_EXPORT QQuickStyle
+{
+public:
+ static QString name();
+ static QString path();
+ static void setStyle(const QString &style);
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKSTYLE_H
diff --git a/src/controls/qquickstyleattached.cpp b/src/controls/qquickstyleattached.cpp
new file mode 100644
index 00000000..0ac47ed1
--- /dev/null
+++ b/src/controls/qquickstyleattached.cpp
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qquickstyleattached_p.h"
+
+#include <QtCore/qfile.h>
+#include <QtCore/qsettings.h>
+#include <QtCore/qfileselector.h>
+#include <QtQuick/private/qquickitem_p.h>
+#include <QtQuickTemplates/private/qquickpopup_p.h>
+
+QT_BEGIN_NAMESPACE
+
+static QQuickStyleAttached *attachedStyle(const QMetaObject *type, QObject *object, bool create = false)
+{
+ if (!object)
+ return nullptr;
+ int idx = -1;
+ return qobject_cast<QQuickStyleAttached *>(qmlAttachedPropertiesObject(&idx, object, type, create));
+}
+
+static QQuickStyleAttached *findParentStyle(const QMetaObject *type, QObject *object)
+{
+ QQuickItem *item = qobject_cast<QQuickItem *>(object);
+ if (item) {
+ // lookup parent items and popups
+ QQuickItem *parent = item->parentItem();
+ while (parent) {
+ QQuickStyleAttached *style = attachedStyle(type, parent);
+ if (style)
+ return style;
+
+ QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent->parent());
+ if (popup)
+ return attachedStyle(type, popup);
+
+ parent = parent->parentItem();
+ }
+
+ // fallback to item's window
+ QQuickStyleAttached *style = attachedStyle(type, item->window());
+ if (style)
+ return style;
+ } else {
+ // lookup popup's window
+ QQuickPopup *popup = qobject_cast<QQuickPopup *>(object);
+ if (popup)
+ return attachedStyle(type, popup->popupItem()->window());
+ }
+
+ // lookup parent window
+ QQuickWindow *window = qobject_cast<QQuickWindow *>(object);
+ if (window) {
+ QQuickWindow *parentWindow = qobject_cast<QQuickWindow *>(window->parent());
+ if (parentWindow) {
+ QQuickStyleAttached *style = attachedStyle(type, window);
+ if (style)
+ return style;
+ }
+ }
+
+ // fallback to engine (global)
+ if (object) {
+ QQmlEngine *engine = qmlEngine(object);
+ if (engine) {
+ QByteArray name = QByteArray("_q_") + type->className();
+ QQuickStyleAttached *style = engine->property(name).value<QQuickStyleAttached*>();
+ if (!style) {
+ style = attachedStyle(type, engine, true);
+ engine->setProperty(name, QVariant::fromValue(style));
+ }
+ return style;
+ }
+ }
+
+ return nullptr;
+}
+
+static QList<QQuickStyleAttached *> findChildStyles(const QMetaObject *type, QObject *object)
+{
+ QList<QQuickStyleAttached *> children;
+
+ QQuickItem *item = qobject_cast<QQuickItem *>(object);
+ if (!item) {
+ QQuickWindow *window = qobject_cast<QQuickWindow *>(object);
+ if (window) {
+ item = window->contentItem();
+
+ const auto windowChildren = window->children();
+ for (QObject *child : windowChildren) {
+ QQuickWindow *childWindow = qobject_cast<QQuickWindow *>(child);
+ if (childWindow) {
+ QQuickStyleAttached *style = attachedStyle(type, childWindow);
+ if (style)
+ children += style;
+ }
+ }
+ }
+ }
+
+ if (item) {
+ const auto childItems = item->childItems();
+ for (QQuickItem *child : childItems) {
+ QQuickStyleAttached *style = attachedStyle(type, child);
+ if (style)
+ children += style;
+ else
+ children += findChildStyles(type, child);
+ }
+ }
+
+ return children;
+}
+
+QQuickStyleAttached::QQuickStyleAttached(QObject *parent) : QObject(parent)
+{
+ QQuickItem *item = qobject_cast<QQuickItem *>(parent);
+ if (!item) {
+ QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent);
+ if (popup)
+ item = popup->popupItem();
+ }
+
+ if (item)
+ QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Parent);
+}
+
+QQuickStyleAttached::~QQuickStyleAttached()
+{
+ QQuickItem *item = qobject_cast<QQuickItem *>(parent());
+ if (item)
+ QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Parent);
+
+ setParentStyle(nullptr);
+}
+
+QSharedPointer<QSettings> QQuickStyleAttached::settings(const QString &group)
+{
+#ifndef QT_NO_SETTINGS
+ const QString filePath = QStringLiteral(":/qtquickcontrols.conf");
+ if (QFile::exists(filePath)) {
+ QFileSelector selector;
+ QSettings *settings = new QSettings(selector.select(filePath), QSettings::IniFormat);
+ if (!group.isEmpty())
+ settings->beginGroup(group);
+ return QSharedPointer<QSettings>(settings);
+ }
+#endif // QT_NO_SETTINGS
+ return QSharedPointer<QSettings>();
+}
+
+QList<QQuickStyleAttached *> QQuickStyleAttached::childStyles() const
+{
+ return m_childStyles;
+}
+
+QQuickStyleAttached *QQuickStyleAttached::parentStyle() const
+{
+ return m_parentStyle;
+}
+
+void QQuickStyleAttached::setParentStyle(QQuickStyleAttached *style)
+{
+ if (m_parentStyle != style) {
+ QQuickStyleAttached *oldParent = m_parentStyle;
+ if (m_parentStyle)
+ m_parentStyle->m_childStyles.removeOne(this);
+ m_parentStyle = style;
+ if (style)
+ style->m_childStyles.append(this);
+ parentStyleChange(style, oldParent);
+ }
+}
+
+void QQuickStyleAttached::init()
+{
+ QQuickStyleAttached *parentStyle = findParentStyle(metaObject(), parent());
+ if (parentStyle)
+ setParentStyle(parentStyle);
+
+ const QList<QQuickStyleAttached *> children = findChildStyles(metaObject(), parent());
+ for (QQuickStyleAttached *child : children)
+ child->setParentStyle(this);
+}
+
+void QQuickStyleAttached::parentStyleChange(QQuickStyleAttached *newParent, QQuickStyleAttached *oldParent)
+{
+ Q_UNUSED(newParent);
+ Q_UNUSED(oldParent);
+}
+
+void QQuickStyleAttached::itemParentChanged(QQuickItem *item, QQuickItem *parent)
+{
+ Q_UNUSED(parent);
+ setParentStyle(findParentStyle(metaObject(), item));
+}
+
+QT_END_NAMESPACE
diff --git a/src/controls/qquickstyle_p.h b/src/controls/qquickstyleattached_p.h
index 02ee667a..7835a482 100644
--- a/src/controls/qquickstyle_p.h
+++ b/src/controls/qquickstyleattached_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKSTYLE_P_H
-#define QQUICKSTYLE_P_H
+#ifndef QQUICKSTYLEATTACHED_P_H
+#define QQUICKSTYLEATTACHED_P_H
//
// W A R N I N G
@@ -54,38 +54,39 @@
#include <QtCore/qpointer.h>
#include <QtCore/qsharedpointer.h>
#include <QtQuick/private/qquickitemchangelistener_p.h>
+#include <QtQuickControls/private/qtquickcontrolsglobal_p.h>
QT_BEGIN_NAMESPACE
class QSettings;
-class QQuickStyle : public QObject, public QQuickItemChangeListener
+class Q_QUICKCONTROLS_PRIVATE_EXPORT QQuickStyleAttached : public QObject, public QQuickItemChangeListener
{
Q_OBJECT
public:
- explicit QQuickStyle(QObject *parent = Q_NULLPTR);
- ~QQuickStyle();
+ explicit QQuickStyleAttached(QObject *parent = nullptr);
+ ~QQuickStyleAttached();
static QSharedPointer<QSettings> settings(const QString &group = QString());
protected:
void init();
- QList<QQuickStyle *> childStyles() const;
+ QList<QQuickStyleAttached *> childStyles() const;
- QQuickStyle *parentStyle() const;
- void setParentStyle(QQuickStyle *style);
+ QQuickStyleAttached *parentStyle() const;
+ void setParentStyle(QQuickStyleAttached *style);
- virtual void parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent);
+ virtual void parentStyleChange(QQuickStyleAttached *newParent, QQuickStyleAttached *oldParent);
- void itemParentChanged(QQuickItem *item, QQuickItem *parent) Q_DECL_OVERRIDE;
+ void itemParentChanged(QQuickItem *item, QQuickItem *parent) override;
private:
- QList<QQuickStyle *> m_childStyles;
- QPointer<QQuickStyle> m_parentStyle;
+ QList<QQuickStyleAttached *> m_childStyles;
+ QPointer<QQuickStyleAttached> m_parentStyle;
};
QT_END_NAMESPACE
-#endif // QQUICKSTYLE_P_H
+#endif // QQUICKSTYLEATTACHED_P_H
diff --git a/src/controls/qquickstyleselector.cpp b/src/controls/qquickstyleselector.cpp
index b8a15ee9..9a48a9a4 100644
--- a/src/controls/qquickstyleselector.cpp
+++ b/src/controls/qquickstyleselector.cpp
@@ -34,69 +34,70 @@
#include "qquickstyleselector_p.h"
#include "qquickstyleselector_p_p.h"
+#include "qquickstyle.h"
-#include <QtCore/QFile>
-#include <QtCore/QDir>
-#include <QtCore/QMutex>
-#include <QtCore/QMutexLocker>
-#include <QtCore/QUrl>
-#include <QtCore/QFileInfo>
-#include <QtCore/QLocale>
-#include <QtCore/QDebug>
-#include <QtCore/QSettings>
+#include <QtCore/qdir.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qfileinfo.h>
+#include <QtCore/qsysinfo.h>
+#include <QtCore/qlocale.h>
#include <QtGui/private/qguiapplication_p.h>
-#include <QtLabsControls/private/qquickstyle_p.h>
QT_BEGIN_NAMESPACE
-Q_GLOBAL_STATIC(QQuickStyleSelectorSharedData, sharedData);
-static QBasicMutex sharedDataMutex;
-
-QQuickStyleSelectorPrivate::QQuickStyleSelectorPrivate()
-{
-}
-
-QQuickStyleSelector::QQuickStyleSelector() : d_ptr(new QQuickStyleSelectorPrivate)
+static bool isLocalScheme(const QString &scheme)
{
- Q_D(QQuickStyleSelector);
- d->style = QGuiApplicationPrivate::styleOverride.toLower();
- if (d->style.isEmpty())
- d->style = QString::fromLatin1(qgetenv("QT_LABS_CONTROLS_STYLE")).toLower();
- if (d->style.isEmpty()) {
- QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Controls"));
- if (settings)
- d->style = settings->value(QStringLiteral("Style")).toString().toLower();
- }
+ bool local = scheme == QLatin1String("qrc");
+#ifdef Q_OS_ANDROID
+ local |= scheme == QLatin1String("assets");
+#endif
+ return local;
}
-QQuickStyleSelector::~QQuickStyleSelector()
+// similar, but not identical to QSysInfo::osType
+static QStringList platformSelectors()
{
-}
+ static QStringList selectors;
+ if (!selectors.isEmpty())
+ return selectors;
-static bool isLocalScheme(const QString &file)
-{
- bool local = file == QLatin1String("qrc");
-#ifdef Q_OS_ANDROID
- local |= file == QLatin1String("assets");
+#if defined(Q_OS_WIN)
+ // can't fall back to QSysInfo because we need both "winphone" and "winrt" for the Windows Phone case
+ selectors << QStringLiteral("windows");
+ selectors << QSysInfo::kernelType(); // "wince" and "winnt"
+# if defined(Q_OS_WINRT)
+ selectors << QStringLiteral("winrt");
+# if defined(Q_OS_WINPHONE)
+ selectors << QStringLiteral("winphone");
+# endif
+# endif
+#elif defined(Q_OS_UNIX)
+ selectors << QStringLiteral("unix");
+# if !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY)
+ // we don't want "linux" for Android or "qnx" for Blackberry here
+ selectors << QSysInfo::kernelType();
+# ifdef Q_OS_MAC
+ selectors << QStringLiteral("mac"); // compatibility, since kernelType() is "darwin"
+# endif
+# endif
+ QString productName = QSysInfo::productType();
+ if (productName != QLatin1String("unknown"))
+ selectors << productName; // "opensuse", "fedora", "osx", "ios", "blackberry", "android"
#endif
- return local;
+ return selectors;
}
-QString QQuickStyleSelector::select(const QString &filePath) const
+static QStringList allSelectors(bool includeStyle)
{
- Q_D(const QQuickStyleSelector);
- QUrl url(d->baseUrl.toString() + filePath);
- if (isLocalScheme(url.scheme()) || url.isLocalFile()) {
- if (isLocalScheme(url.scheme())) {
- QString equivalentPath = QLatin1Char(':') + url.path();
- QString selectedPath = d->select(equivalentPath);
- url.setPath(selectedPath.remove(0, 1));
- } else {
- url = QUrl::fromLocalFile(d->select(url.toLocalFile()));
- }
+ QStringList selectors = platformSelectors();
+ selectors += QLocale().name();
+ if (includeStyle) {
+ QString style = QQuickStyle::name();
+ if (!style.isEmpty())
+ selectors.prepend(style.toLower());
}
- return url.toString();
+ return selectors;
}
static QString selectionHelper(const QString &path, const QString &fileName, const QStringList &selectors)
@@ -107,7 +108,7 @@ static QString selectionHelper(const QString &path, const QString &fileName, con
*/
Q_ASSERT(path.isEmpty() || path.endsWith(QLatin1Char('/')));
- foreach (const QString &s, selectors) {
+ for (const QString &s : selectors) {
QString prospectiveBase = path + s + QLatin1Char('/');
QStringList remainingSelectors = selectors;
remainingSelectors.removeAll(s);
@@ -120,7 +121,7 @@ static QString selectionHelper(const QString &path, const QString &fileName, con
// If we reach here there were no successful files found at a lower level in this branch, so we
// should check this level as a potential result.
- if (!QFile::exists(path + fileName))
+ if (!QFileInfo::exists(path + fileName))
return QString();
return path + fileName;
}
@@ -133,40 +134,19 @@ QString QQuickStyleSelectorPrivate::select(const QString &filePath) const
return filePath;
QString ret = selectionHelper(fi.path().isEmpty() ? QString() : fi.path() + QLatin1Char('/'),
- fi.fileName(), allSelectors());
+ fi.fileName(), allSelectors(true));
if (!ret.isEmpty())
return ret;
return filePath;
}
-QString QQuickStyleSelector::style() const
-{
- Q_D(const QQuickStyleSelector);
- return d->style;
-}
-
-void QQuickStyleSelector::setStyle(const QString &s)
+QQuickStyleSelector::QQuickStyleSelector() : d_ptr(new QQuickStyleSelectorPrivate)
{
- Q_D(QQuickStyleSelector);
- d->style = s;
}
-QStringList QQuickStyleSelectorPrivate::allSelectors() const
-{
- QMutexLocker locker(&sharedDataMutex);
- updateSelectors();
- QStringList selectors = sharedData->staticSelectors;
- if (!style.isEmpty())
- selectors.prepend(style);
- return selectors;
-}
-
-void QQuickStyleSelector::setBaseUrl(const QUrl &base)
+QQuickStyleSelector::~QQuickStyleSelector()
{
- Q_D(QQuickStyleSelector);
- if (d->baseUrl != base)
- d->baseUrl = base;
}
QUrl QQuickStyleSelector::baseUrl() const
@@ -175,53 +155,39 @@ QUrl QQuickStyleSelector::baseUrl() const
return d->baseUrl;
}
-void QQuickStyleSelectorPrivate::updateSelectors()
+void QQuickStyleSelector::setBaseUrl(const QUrl &url)
{
- if (!sharedData->staticSelectors.isEmpty())
- return; //Already loaded
-
- sharedData->staticSelectors << sharedData->preloadedStatics; //Potential for static selectors from other modules
-
- // TODO: Update on locale changed?
- sharedData->staticSelectors << QLocale().name();
-
- sharedData->staticSelectors << platformSelectors();
+ Q_D(QQuickStyleSelector);
+ d->baseUrl = url;
}
-QStringList QQuickStyleSelectorPrivate::platformSelectors()
+QString QQuickStyleSelector::select(const QString &fileName) const
{
- // similar, but not identical to QSysInfo::osType
- QStringList ret;
-#if defined(Q_OS_WIN)
- // can't fall back to QSysInfo because we need both "winphone" and "winrt" for the Windows Phone case
- ret << QStringLiteral("windows");
- ret << QSysInfo::kernelType(); // "wince" and "winnt"
-# if defined(Q_OS_WINRT)
- ret << QStringLiteral("winrt");
-# if defined(Q_OS_WINPHONE)
- ret << QStringLiteral("winphone");
-# endif
-# endif
-#elif defined(Q_OS_UNIX)
- ret << QStringLiteral("unix");
-# if !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY)
- // we don't want "linux" for Android or "qnx" for Blackberry here
- ret << QSysInfo::kernelType();
-# ifdef Q_OS_MAC
- ret << QStringLiteral("mac"); // compatibility, since kernelType() is "darwin"
-# endif
-# endif
- QString productName = QSysInfo::productType();
- if (productName != QLatin1String("unknown"))
- ret << productName; // "opensuse", "fedora", "osx", "ios", "blackberry", "android"
-#endif
- return ret;
-}
+ Q_D(const QQuickStyleSelector);
+ const QString overridePath = QQuickStyle::path();
+ if (!overridePath.isEmpty()) {
+ const QString stylePath = overridePath + QQuickStyle::name() + QLatin1Char('/');
+ if (QFile::exists(stylePath + fileName)) {
+ // the style name is included to the path, so exclude it from the selectors.
+ // the rest of the selectors (os, locale) are still valid, though.
+ const QString selectedPath = selectionHelper(stylePath, fileName, allSelectors(false));
+ if (selectedPath.startsWith(QLatin1Char(':')))
+ return QLatin1String("qrc") + selectedPath;
+ return QUrl::fromLocalFile(selectedPath).toString();
+ }
+ }
-void QQuickStyleSelectorPrivate::addStatics(const QStringList &statics)
-{
- QMutexLocker locker(&sharedDataMutex);
- sharedData->preloadedStatics << statics;
+ QUrl url(d->baseUrl.toString() + QLatin1Char('/') + fileName);
+ if (isLocalScheme(url.scheme()) || url.isLocalFile()) {
+ if (isLocalScheme(url.scheme())) {
+ QString equivalentPath = QLatin1Char(':') + url.path();
+ QString selectedPath = d->select(equivalentPath);
+ url.setPath(selectedPath.remove(0, 1));
+ } else {
+ url = QUrl::fromLocalFile(d->select(url.toLocalFile()));
+ }
+ }
+ return url.toString();
}
QT_END_NAMESPACE
diff --git a/src/controls/qquickstyleselector_p.h b/src/controls/qquickstyleselector_p.h
index 2ca6ea3a..5c6434cb 100644
--- a/src/controls/qquickstyleselector_p.h
+++ b/src/controls/qquickstyleselector_p.h
@@ -47,26 +47,27 @@
//
#include <QtCore/qurl.h>
+#include <QtCore/qstring.h>
#include <QtCore/qscopedpointer.h>
+#include <QtQuickControls/private/qtquickcontrolsglobal_p.h>
QT_BEGIN_NAMESPACE
class QQuickStyleSelectorPrivate;
-class QQuickStyleSelector
+
+class Q_QUICKCONTROLS_PRIVATE_EXPORT QQuickStyleSelector
{
public:
- explicit QQuickStyleSelector();
+ QQuickStyleSelector();
~QQuickStyleSelector();
- QString select(const QString &filePath) const;
-
- QString style() const;
- void setStyle(const QString &s);
-
- void setBaseUrl(const QUrl &base);
QUrl baseUrl() const;
+ void setBaseUrl(const QUrl &url);
+
+ QString select(const QString &fileName) const;
private:
+ Q_DISABLE_COPY(QQuickStyleSelector)
Q_DECLARE_PRIVATE(QQuickStyleSelector)
QScopedPointer<QQuickStyleSelectorPrivate> d_ptr;
};
diff --git a/src/controls/qquickstyleselector_p_p.h b/src/controls/qquickstyleselector_p_p.h
index e4df1035..9f831428 100644
--- a/src/controls/qquickstyleselector_p_p.h
+++ b/src/controls/qquickstyleselector_p_p.h
@@ -46,32 +46,15 @@
// We mean it.
//
-#include <QtCore/QString>
-#include <QtCore/QUrl>
-#include <private/qobject_p.h>
-#include <QtCore/qstringlist.h>
-
-#include "qquickstyleselector_p.h"
+#include <QtQuickControls/private/qquickstyleselector_p.h>
QT_BEGIN_NAMESPACE
-struct QQuickStyleSelectorSharedData //Not QSharedData because currently is just a global store
-{
- QStringList staticSelectors;
- QStringList preloadedStatics;
-};
-
class QQuickStyleSelectorPrivate
{
public:
- static void updateSelectors();
- static QStringList platformSelectors();
- static void addStatics(const QStringList &); //For loading GUI statics from other Qt modules
- QQuickStyleSelectorPrivate();
QString select(const QString &filePath) const;
- QStringList allSelectors() const;
- QString style;
QUrl baseUrl;
};
diff --git a/src/controls/qtquickcontrolsglobal.h b/src/controls/qtquickcontrolsglobal.h
new file mode 100644
index 00000000..98926da4
--- /dev/null
+++ b/src/controls/qtquickcontrolsglobal.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QTQUICKCONTROLSGLOBAL_H
+#define QTQUICKCONTROLSGLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_STATIC
+# if defined(QT_BUILD_QUICKCONTROLS_LIB)
+# define Q_QUICKCONTROLS_EXPORT Q_DECL_EXPORT
+# else
+# define Q_QUICKCONTROLS_EXPORT Q_DECL_IMPORT
+# endif
+#else
+# define Q_QUICKCONTROLS_EXPORT
+#endif
+
+QT_END_NAMESPACE
+
+#endif // QTQUICKCONTROLSGLOBAL_H
diff --git a/src/controls/qtquickcontrolsglobal_p.h b/src/controls/qtquickcontrolsglobal_p.h
new file mode 100644
index 00000000..ff91b44d
--- /dev/null
+++ b/src/controls/qtquickcontrolsglobal_p.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QTQUICKCONTROLSGLOBAL_P_H
+#define QTQUICKCONTROLSGLOBAL_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtQuickControls/qtquickcontrolsglobal.h>
+
+#define Q_QUICKCONTROLS_PRIVATE_EXPORT Q_QUICKCONTROLS_EXPORT
+
+#endif // QTQUICKCONTROLSGLOBAL_P_H
diff --git a/src/imports/calendar/calendar.pro b/src/imports/calendar/calendar.pro
index 0dee3cb1..7c375139 100644
--- a/src/imports/calendar/calendar.pro
+++ b/src/imports/calendar/calendar.pro
@@ -3,7 +3,7 @@ TARGETPATH = Qt/labs/calendar
IMPORT_VERSION = 1.0
QT += qml quick
-QT_PRIVATE += core-private gui-private qml-private quick-private labstemplates-private
+QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
diff --git a/src/imports/calendar/plugins.qmltypes b/src/imports/calendar/plugins.qmltypes
index 74c407c4..17295f06 100644
--- a/src/imports/calendar/plugins.qmltypes
+++ b/src/imports/calendar/plugins.qmltypes
@@ -78,6 +78,7 @@ Module {
Property { name: "spacing"; type: "double" }
Property { name: "locale"; type: "QLocale" }
Property { name: "mirrored"; type: "bool"; isReadonly: true }
+ Property { name: "focusPolicy"; type: "Qt::FocusPolicy" }
Property { name: "focusReason"; type: "Qt::FocusReason" }
Property { name: "background"; type: "QQuickItem"; isPointer: true }
Property { name: "contentItem"; type: "QQuickItem"; isPointer: true }
diff --git a/src/imports/calendar/qquickcalendar_p.h b/src/imports/calendar/qquickcalendar_p.h
index c44a6a1c..cdc9cc94 100644
--- a/src/imports/calendar/qquickcalendar_p.h
+++ b/src/imports/calendar/qquickcalendar_p.h
@@ -59,7 +59,7 @@ class QQuickCalendar : public QObject
Q_OBJECT
public:
- explicit QQuickCalendar(QObject *parent = Q_NULLPTR);
+ explicit QQuickCalendar(QObject *parent = nullptr);
enum Month {
January,
diff --git a/src/imports/calendar/qquickcalendarmodel_p.h b/src/imports/calendar/qquickcalendarmodel_p.h
index 4f17980a..fa7717ed 100644
--- a/src/imports/calendar/qquickcalendarmodel_p.h
+++ b/src/imports/calendar/qquickcalendarmodel_p.h
@@ -66,7 +66,7 @@ class QQuickCalendarModel : public QAbstractListModel, public QQmlParserStatus
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
public:
- explicit QQuickCalendarModel(QObject *parent = Q_NULLPTR);
+ explicit QQuickCalendarModel(QObject *parent = nullptr);
QDate from() const;
void setFrom(const QDate &from);
@@ -84,9 +84,9 @@ public:
YearRole
};
- QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
- QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE;
- int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
+ QHash<int, QByteArray> roleNames() const override;
+ QVariant data(const QModelIndex &index, int role) const override;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
Q_SIGNALS:
void fromChanged();
@@ -94,8 +94,8 @@ Q_SIGNALS:
void countChanged();
protected:
- void classBegin() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void classBegin() override;
+ void componentComplete() override;
private:
Q_DISABLE_COPY(QQuickCalendarModel)
diff --git a/src/imports/calendar/qquickdayofweekmodel_p.h b/src/imports/calendar/qquickdayofweekmodel_p.h
index 90ebdc6c..9e76b961 100644
--- a/src/imports/calendar/qquickdayofweekmodel_p.h
+++ b/src/imports/calendar/qquickdayofweekmodel_p.h
@@ -63,7 +63,7 @@ class QQuickDayOfWeekModel : public QAbstractListModel
Q_PROPERTY(int count READ rowCount CONSTANT FINAL)
public:
- explicit QQuickDayOfWeekModel(QObject *parent = Q_NULLPTR);
+ explicit QQuickDayOfWeekModel(QObject *parent = nullptr);
QLocale locale() const;
void setLocale(const QLocale &locale);
@@ -77,9 +77,9 @@ public:
NarrowNameRole
};
- QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
- QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE;
- int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
+ QHash<int, QByteArray> roleNames() const override;
+ QVariant data(const QModelIndex &index, int role) const override;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
Q_SIGNALS:
void localeChanged();
diff --git a/src/imports/calendar/qquickdayofweekrow.cpp b/src/imports/calendar/qquickdayofweekrow.cpp
index 76bcf5df..8530389f 100644
--- a/src/imports/calendar/qquickdayofweekrow.cpp
+++ b/src/imports/calendar/qquickdayofweekrow.cpp
@@ -37,7 +37,7 @@
#include "qquickdayofweekrow_p.h"
#include "qquickdayofweekmodel_p.h"
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
QT_BEGIN_NAMESPACE
@@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE
class QQuickDayOfWeekRowPrivate : public QQuickControlPrivate
{
public:
- QQuickDayOfWeekRowPrivate() : delegate(Q_NULLPTR), model(Q_NULLPTR) { }
+ QQuickDayOfWeekRowPrivate() : delegate(nullptr), model(nullptr) { }
void resizeItems();
@@ -90,7 +90,8 @@ void QQuickDayOfWeekRowPrivate::resizeItems()
itemSize.setWidth((contentItem->width() - 6 * spacing) / 7);
itemSize.setHeight(contentItem->height());
- foreach (QQuickItem *item, contentItem->childItems())
+ const auto childItems = contentItem->childItems();
+ for (QQuickItem *item : childItems)
item->setSize(itemSize);
}
diff --git a/src/imports/calendar/qquickdayofweekrow_p.h b/src/imports/calendar/qquickdayofweekrow_p.h
index d1e5e16f..7c69bba0 100644
--- a/src/imports/calendar/qquickdayofweekrow_p.h
+++ b/src/imports/calendar/qquickdayofweekrow_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -62,7 +62,7 @@ class QQuickDayOfWeekRow : public QQuickControl
Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL)
public:
- explicit QQuickDayOfWeekRow(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickDayOfWeekRow(QQuickItem *parent = nullptr);
QVariant source() const;
void setSource(const QVariant &source);
@@ -75,10 +75,10 @@ Q_SIGNALS:
void delegateChanged();
protected:
- void componentComplete() Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void localeChange(const QLocale &newLocale, const QLocale &oldLocale) Q_DECL_OVERRIDE;
- void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE;
+ void componentComplete() override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override;
+ void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
private:
Q_DISABLE_COPY(QQuickDayOfWeekRow)
diff --git a/src/imports/calendar/qquickmonthgrid.cpp b/src/imports/calendar/qquickmonthgrid.cpp
index fde4a71d..084ade3c 100644
--- a/src/imports/calendar/qquickmonthgrid.cpp
+++ b/src/imports/calendar/qquickmonthgrid.cpp
@@ -39,7 +39,7 @@
#include <QtGui/qstylehints.h>
#include <QtGui/qguiapplication.h>
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
#include <QtQml/qqmlinfo.h>
QT_BEGIN_NAMESPACE
@@ -78,7 +78,7 @@ class QQuickMonthGridPrivate : public QQuickControlPrivate
Q_DECLARE_PUBLIC(QQuickMonthGrid)
public:
- QQuickMonthGridPrivate() : pressTimer(0), pressedItem(Q_NULLPTR), model(Q_NULLPTR), delegate(Q_NULLPTR) { }
+ QQuickMonthGridPrivate() : pressTimer(0), pressedItem(nullptr), model(nullptr), delegate(nullptr) { }
void resizeItems();
@@ -108,7 +108,8 @@ void QQuickMonthGridPrivate::resizeItems()
itemSize.setWidth((contentItem->width() - 6 * spacing) / 7);
itemSize.setHeight((contentItem->height() - 5 * spacing) / 6);
- foreach (QQuickItem *item, contentItem->childItems())
+ const auto childItems = contentItem->childItems();
+ for (QQuickItem *item : childItems)
item->setSize(itemSize);
}
@@ -119,7 +120,7 @@ QQuickItem *QQuickMonthGridPrivate::cellAt(const QPoint &pos) const
QPointF mapped = q->mapToItem(contentItem, pos);
return contentItem->childAt(mapped.x(), mapped.y());
}
- return Q_NULLPTR;
+ return nullptr;
}
QDate QQuickMonthGridPrivate::dateOf(QQuickItem *cell) const
@@ -150,7 +151,7 @@ void QQuickMonthGridPrivate::clearPress(bool clicked)
emit q->clicked(pressedDate);
}
pressedDate = QDate();
- pressedItem = Q_NULLPTR;
+ pressedItem = nullptr;
}
void QQuickMonthGridPrivate::setContextProperty(QQuickItem *item, const QString &name, const QVariant &value)
@@ -335,7 +336,8 @@ void QQuickMonthGrid::componentComplete()
Q_D(QQuickMonthGrid);
QQuickControl::componentComplete();
if (d->contentItem) {
- foreach (QQuickItem *child, d->contentItem->childItems()) {
+ const auto childItems = d->contentItem->childItems();
+ for (QQuickItem *child : childItems) {
if (!QQuickItemPrivate::get(child)->isTransparentForPositioner())
d->setContextProperty(child, QStringLiteral("pressed"), false);
}
diff --git a/src/imports/calendar/qquickmonthgrid_p.h b/src/imports/calendar/qquickmonthgrid_p.h
index b2d8124a..df5f1716 100644
--- a/src/imports/calendar/qquickmonthgrid_p.h
+++ b/src/imports/calendar/qquickmonthgrid_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -65,7 +65,7 @@ class QQuickMonthGrid : public QQuickControl
Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL)
public:
- explicit QQuickMonthGrid(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickMonthGrid(QQuickItem *parent = nullptr);
int month() const;
void setMonth(int month);
@@ -95,17 +95,17 @@ Q_SIGNALS:
void pressAndHold(const QDate &date);
protected:
- void componentComplete() Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void localeChange(const QLocale &newLocale, const QLocale &oldLocale) Q_DECL_OVERRIDE;
- void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE;
- void updatePolish() Q_DECL_OVERRIDE;
-
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
+ void componentComplete() override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override;
+ void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
+ void updatePolish() override;
+
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void timerEvent(QTimerEvent *event) override;
private:
Q_DISABLE_COPY(QQuickMonthGrid)
diff --git a/src/imports/calendar/qquickmonthmodel_p.h b/src/imports/calendar/qquickmonthmodel_p.h
index 0f8347b5..578fe620 100644
--- a/src/imports/calendar/qquickmonthmodel_p.h
+++ b/src/imports/calendar/qquickmonthmodel_p.h
@@ -67,7 +67,7 @@ class QQuickMonthModel : public QAbstractListModel
Q_PROPERTY(int count READ rowCount CONSTANT FINAL)
public:
- explicit QQuickMonthModel(QObject *parent = Q_NULLPTR);
+ explicit QQuickMonthModel(QObject *parent = nullptr);
int month() const;
void setMonth(int month);
@@ -93,9 +93,9 @@ public:
YearRole
};
- QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
- QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE;
- int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
+ QHash<int, QByteArray> roleNames() const override;
+ QVariant data(const QModelIndex &index, int role) const override;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
Q_SIGNALS:
void monthChanged();
diff --git a/src/imports/calendar/qquickweeknumbercolumn.cpp b/src/imports/calendar/qquickweeknumbercolumn.cpp
index f31497c6..1aac33f9 100644
--- a/src/imports/calendar/qquickweeknumbercolumn.cpp
+++ b/src/imports/calendar/qquickweeknumbercolumn.cpp
@@ -37,7 +37,7 @@
#include "qquickweeknumbercolumn_p.h"
#include "qquickweeknumbermodel_p.h"
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
#include <QtQml/qqmlinfo.h>
QT_BEGIN_NAMESPACE
@@ -74,7 +74,7 @@ QT_BEGIN_NAMESPACE
class QQuickWeekNumberColumnPrivate : public QQuickControlPrivate
{
public:
- QQuickWeekNumberColumnPrivate() : delegate(Q_NULLPTR), model(Q_NULLPTR) { }
+ QQuickWeekNumberColumnPrivate() : delegate(nullptr), model(nullptr) { }
void resizeItems();
@@ -92,7 +92,8 @@ void QQuickWeekNumberColumnPrivate::resizeItems()
itemSize.setWidth(contentItem->width());
itemSize.setHeight((contentItem->height() - 5 * spacing) / 6);
- foreach (QQuickItem *item, contentItem->childItems())
+ const auto childItems = contentItem->childItems();
+ for (QQuickItem *item : childItems)
item->setSize(itemSize);
}
diff --git a/src/imports/calendar/qquickweeknumbercolumn_p.h b/src/imports/calendar/qquickweeknumbercolumn_p.h
index 2cacdeac..92606fc8 100644
--- a/src/imports/calendar/qquickweeknumbercolumn_p.h
+++ b/src/imports/calendar/qquickweeknumbercolumn_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -64,7 +64,7 @@ class QQuickWeekNumberColumn : public QQuickControl
Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL)
public:
- explicit QQuickWeekNumberColumn(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickWeekNumberColumn(QQuickItem *parent = nullptr);
int month() const;
void setMonth(int month);
@@ -85,10 +85,10 @@ Q_SIGNALS:
void delegateChanged();
protected:
- void componentComplete() Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void localeChange(const QLocale &newLocale, const QLocale &oldLocale) Q_DECL_OVERRIDE;
- void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE;
+ void componentComplete() override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override;
+ void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
private:
Q_DISABLE_COPY(QQuickWeekNumberColumn)
diff --git a/src/imports/calendar/qquickweeknumbermodel_p.h b/src/imports/calendar/qquickweeknumbermodel_p.h
index 2c8b484f..74f2550f 100644
--- a/src/imports/calendar/qquickweeknumbermodel_p.h
+++ b/src/imports/calendar/qquickweeknumbermodel_p.h
@@ -65,7 +65,7 @@ class QQuickWeekNumberModel : public QAbstractListModel
Q_PROPERTY(int count READ rowCount CONSTANT FINAL)
public:
- explicit QQuickWeekNumberModel(QObject *parent = Q_NULLPTR);
+ explicit QQuickWeekNumberModel(QObject *parent = nullptr);
int month() const;
void setMonth(int month);
@@ -83,9 +83,9 @@ public:
WeekNumberRole = Qt::UserRole + 1
};
- QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
- QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE;
- int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
+ QHash<int, QByteArray> roleNames() const override;
+ QVariant data(const QModelIndex &index, int role) const override;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
Q_SIGNALS:
void monthChanged();
diff --git a/src/imports/calendar/qtlabscalendarplugin.cpp b/src/imports/calendar/qtlabscalendarplugin.cpp
index 8d7d563d..4ecd5ddb 100644
--- a/src/imports/calendar/qtlabscalendarplugin.cpp
+++ b/src/imports/calendar/qtlabscalendarplugin.cpp
@@ -42,6 +42,13 @@
#include "qquickcalendarmodel_p.h"
#include "qquickcalendar_p.h"
+static inline void initResources()
+{
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(qmake_Qt_labs_calendar);
+#endif
+}
+
QT_BEGIN_NAMESPACE
class QtLabsCalendarPlugin: public QQmlExtensionPlugin
@@ -50,9 +57,15 @@ class QtLabsCalendarPlugin: public QQmlExtensionPlugin
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
public:
+ QtLabsCalendarPlugin(QObject *parent = nullptr);
void registerTypes(const char *uri);
};
+QtLabsCalendarPlugin::QtLabsCalendarPlugin(QObject *parent) : QQmlExtensionPlugin(parent)
+{
+ initResources();
+}
+
static QObject *calendarSingleton(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine);
diff --git a/src/imports/controls/Button.qml b/src/imports/controls/Button.qml
index 290f4ce4..67e9bffe 100644
--- a/src/imports/controls/Button.qml
+++ b/src/imports/controls/Button.qml
@@ -41,21 +41,17 @@ T.Button {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
leftPadding: 8
rightPadding: 8
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
opacity: enabled || highlighted ? 1 : 0.3
@@ -64,7 +60,7 @@ T.Button {
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml
index 4b7af3b1..52061681 100644
--- a/src/imports/controls/CheckBox.qml
+++ b/src/imports/controls/CheckBox.qml
@@ -41,13 +41,11 @@ T.CheckBox {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
spacing: 6
@@ -81,12 +79,10 @@ T.CheckBox {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -96,5 +92,5 @@ T.CheckBox {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml
index 2745a0d8..6e3dc91b 100644
--- a/src/imports/controls/ComboBox.qml
+++ b/src/imports/controls/ComboBox.qml
@@ -36,6 +36,7 @@
import QtQuick 2.6
import QtQuick.Window 2.2
+import Qt.labs.controls 1.0
import Qt.labs.templates 1.0 as T
T.ComboBox {
diff --git a/src/imports/controls/Frame.qml b/src/imports/controls/Frame.qml
index 3c9326e1..581d15c8 100644
--- a/src/imports/controls/Frame.qml
+++ b/src/imports/controls/Frame.qml
@@ -46,19 +46,16 @@ T.Frame {
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
- padding: 6
+ padding: 12
//! [contentItem]
contentItem: Item { }
//! [contentItem]
- //! [frame]
- frame: Rectangle {
- width: parent.width
- height: parent.height
-
+ //! [background]
+ background: Rectangle {
color: "transparent"
border.color: "#bdbebf"
}
- //! [frame]
+ //! [background]
}
diff --git a/src/imports/controls/GroupBox.qml b/src/imports/controls/GroupBox.qml
index bc1801c2..3de866a9 100644
--- a/src/imports/controls/GroupBox.qml
+++ b/src/imports/controls/GroupBox.qml
@@ -49,8 +49,8 @@ T.GroupBox {
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
spacing: 6
- padding: 6
- topPadding: 6 + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
+ padding: 12
+ topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
//! [contentItem]
contentItem: Item { }
@@ -70,8 +70,8 @@ T.GroupBox {
}
//! [label]
- //! [frame]
- frame: Rectangle {
+ //! [background]
+ background: Rectangle {
y: control.topPadding - control.padding
width: parent.width
height: parent.height - control.topPadding + control.padding
@@ -79,5 +79,5 @@ T.GroupBox {
color: "transparent"
border.color: "#bdbebf"
}
- //! [frame]
+ //! [background]
}
diff --git a/src/imports/controls/ItemDelegate.qml b/src/imports/controls/ItemDelegate.qml
index b5dfb4b6..13a13e1e 100644
--- a/src/imports/controls/ItemDelegate.qml
+++ b/src/imports/controls/ItemDelegate.qml
@@ -41,23 +41,19 @@ T.ItemDelegate {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 12
spacing: 12
- //! [label]
- label: Text {
- x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding
- y: control.topPadding
- width: control.availableWidth - (control.checkable ? indicator.width + control.spacing : 0)
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -67,7 +63,7 @@ T.ItemDelegate {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [indicator]
indicator: Image {
diff --git a/src/imports/controls/MenuItem.qml b/src/imports/controls/MenuItem.qml
index ae5a8e38..75866fbe 100644
--- a/src/imports/controls/MenuItem.qml
+++ b/src/imports/controls/MenuItem.qml
@@ -40,21 +40,19 @@ import Qt.labs.templates 1.0 as T
T.MenuItem {
id: control
- implicitWidth: background ? background.implicitWidth
- : (label ? label.implicitWidth : 0) + (indicator ? indicator.implicitWidth : 0)
- + (label && indicator ? spacing : 0) + leftPadding + rightPadding
- implicitHeight: background ? background.implicitHeight
- : (label ? label.implicitHeight : 0) + (indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ implicitWidth: Math.max(background ? background.implicitWidth : 0,
+ contentItem.implicitWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(background ? background.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
+ indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
- y: control.topPadding
- width: control.availableWidth - (control.checkable ? indicator.width + control.spacing : 0)
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -64,7 +62,7 @@ T.MenuItem {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [indicator]
indicator: Image {
diff --git a/src/imports/controls/Pane.qml b/src/imports/controls/Pane.qml
index 7b95cd8a..7fbdb492 100644
--- a/src/imports/controls/Pane.qml
+++ b/src/imports/controls/Pane.qml
@@ -46,7 +46,7 @@ T.Pane {
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
- padding: 6
+ padding: 12
//! [contentItem]
contentItem: Item { }
diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml
index 795fd231..0439cbb9 100644
--- a/src/imports/controls/ProgressBar.qml
+++ b/src/imports/controls/ProgressBar.qml
@@ -42,17 +42,15 @@ T.ProgressBar {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
+ contentItem.implicitHeight + topPadding + bottomPadding)
- //! [indicator]
- indicator: ProgressStrip {
+ //! [contentItem]
+ contentItem: ProgressStrip {
id: strip
- x: control.leftPadding
- y: control.topPadding + (control.availableHeight - height) / 2
- width: control.availableWidth
- height: 6
+ implicitHeight: 6
+ implicitWidth: 116
scale: control.mirrored ? -1 : 1
progress: control.position
indeterminate: control.indeterminate
@@ -62,7 +60,7 @@ T.ProgressBar {
running: control.visible && control.indeterminate
}
}
- //! [indicator]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml
index 8e1e0bce..f1e10a6c 100644
--- a/src/imports/controls/RadioButton.qml
+++ b/src/imports/controls/RadioButton.qml
@@ -42,13 +42,11 @@ T.RadioButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
spacing: 6
@@ -78,12 +76,10 @@ T.RadioButton {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -93,5 +89,5 @@ T.RadioButton {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/RangeSlider.qml b/src/imports/controls/RangeSlider.qml
index 9a74d4c8..8642a390 100644
--- a/src/imports/controls/RangeSlider.qml
+++ b/src/imports/controls/RangeSlider.qml
@@ -41,11 +41,11 @@ T.RangeSlider {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- Math.max(track ? track.implicitWidth : 0,
+ Math.max(background ? background.implicitWidth : 0,
first.handle ? first.handle.implicitWidth : 0,
second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(track ? track.implicitHeight : 0,
+ Math.max(background ? background.implicitHeight : 0,
first.handle ? first.handle.implicitHeight : 0,
second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding)
@@ -81,8 +81,8 @@ T.RangeSlider {
}
//! [secondHandle]
- //! [track]
- track: Rectangle {
+ //! [background]
+ background: Rectangle {
x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2)
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0)
implicitWidth: horizontal ? 200 : 6
@@ -96,5 +96,5 @@ T.RangeSlider {
readonly property bool horizontal: control.orientation === Qt.Horizontal
}
- //! [track]
+ //! [background]
}
diff --git a/src/imports/controls/ScrollBar.qml b/src/imports/controls/ScrollBar.qml
index 55d53191..16ac2dfc 100644
--- a/src/imports/controls/ScrollBar.qml
+++ b/src/imports/controls/ScrollBar.qml
@@ -41,14 +41,14 @@ T.ScrollBar {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- handle.implicitWidth + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- handle.implicitHeight + topPadding + bottomPadding)
+ contentItem.implicitHeight + topPadding + bottomPadding)
padding: 2
- //! [handle]
- handle: Rectangle {
+ //! [contentItem]
+ contentItem: Rectangle {
id: handle
implicitWidth: 6
@@ -59,12 +59,6 @@ T.ScrollBar {
visible: control.size < 1.0
opacity: 0.0
- readonly property bool horizontal: control.orientation === Qt.Horizontal
- x: control.leftPadding + (horizontal ? control.position * control.width : 0)
- y: control.topPadding + (horizontal ? 0 : control.position * control.height)
- width: horizontal ? control.size * control.availableWidth : implicitWidth
- height: horizontal ? implicitHeight : control.size * control.availableHeight
-
states: State {
name: "active"
when: control.active
@@ -79,5 +73,5 @@ T.ScrollBar {
}
}
}
- //! [handle]
+ //! [contentItem]
}
diff --git a/src/imports/controls/ScrollIndicator.qml b/src/imports/controls/ScrollIndicator.qml
index e2fc23b1..4b09b35b 100644
--- a/src/imports/controls/ScrollIndicator.qml
+++ b/src/imports/controls/ScrollIndicator.qml
@@ -41,14 +41,14 @@ T.ScrollIndicator {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- indicator.implicitWidth + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- indicator.implicitHeight + topPadding + bottomPadding)
+ contentItem.implicitHeight + topPadding + bottomPadding)
padding: 2
- //! [indicator]
- indicator: Rectangle {
+ //! [contentItem]
+ contentItem: Rectangle {
id: indicator
implicitWidth: 2
@@ -58,12 +58,6 @@ T.ScrollIndicator {
visible: control.size < 1.0
opacity: 0.0
- readonly property bool horizontal: control.orientation === Qt.Horizontal
- x: control.leftPadding + (horizontal ? control.position * control.width : 0)
- y: control.topPadding + (horizontal ? 0 : control.position * control.height)
- width: horizontal ? control.size * control.availableWidth : implicitWidth
- height: horizontal ? implicitHeight : control.size * control.availableHeight
-
states: State {
name: "active"
when: control.active
@@ -80,5 +74,5 @@ T.ScrollIndicator {
}
]
}
- //! [indicator]
+ //! [contentItem]
}
diff --git a/src/imports/controls/Slider.qml b/src/imports/controls/Slider.qml
index 95cfc54e..53ebd04c 100644
--- a/src/imports/controls/Slider.qml
+++ b/src/imports/controls/Slider.qml
@@ -41,10 +41,10 @@ T.Slider {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- Math.max(track ? track.implicitWidth : 0,
+ Math.max(background ? background.implicitWidth : 0,
handle ? handle.implicitWidth : 0) + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(track ? track.implicitHeight : 0,
+ Math.max(background ? background.implicitHeight : 0,
handle ? handle.implicitHeight : 0) + topPadding + bottomPadding)
padding: 6
@@ -63,8 +63,8 @@ T.Slider {
}
//! [handle]
- //! [track]
- track: Rectangle {
+ //! [background]
+ background: Rectangle {
x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2)
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0)
implicitWidth: horizontal ? 200 : 6
@@ -78,5 +78,5 @@ T.Slider {
readonly property bool horizontal: control.orientation === Qt.Horizontal
}
- //! [track]
+ //! [background]
}
diff --git a/src/imports/controls/SpinBox.qml b/src/imports/controls/SpinBox.qml
index 77f89206..d3184626 100644
--- a/src/imports/controls/SpinBox.qml
+++ b/src/imports/controls/SpinBox.qml
@@ -74,6 +74,7 @@ T.SpinBox {
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
+ readOnly: !control.editable
validator: control.validator
inputMethodHints: Qt.ImhFormattedNumbersOnly
}
diff --git a/src/imports/controls/StackView.qml b/src/imports/controls/StackView.qml
index f0869307..2de21885 100644
--- a/src/imports/controls/StackView.qml
+++ b/src/imports/controls/StackView.qml
@@ -39,41 +39,41 @@ import Qt.labs.controls 1.0
import Qt.labs.templates 1.0 as T
T.StackView {
- id: root
+ id: control
//! [popEnter]
popEnter: Transition {
- XAnimator { from: (root.mirrored ? -1 : 1) * -root.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
+ XAnimator { from: (control.mirrored ? -1 : 1) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
}
//! [popEnter]
//! [popExit]
popExit: Transition {
- XAnimator { from: 0; to: (root.mirrored ? -1 : 1) * root.width; duration: 400; easing.type: Easing.OutCubic }
+ XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * control.width; duration: 400; easing.type: Easing.OutCubic }
}
//! [popExit]
//! [pushEnter]
pushEnter: Transition {
- XAnimator { from: (root.mirrored ? -1 : 1) * root.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
+ XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
}
//! [pushEnter]
//! [pushExit]
pushExit: Transition {
- XAnimator { from: 0; to: (root.mirrored ? -1 : 1) * -root.width; duration: 400; easing.type: Easing.OutCubic }
+ XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic }
}
//! [pushExit]
//! [replaceEnter]
replaceEnter: Transition {
- XAnimator { from: (root.mirrored ? -1 : 1) * root.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
+ XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
}
//! [replaceEnter]
//! [replaceExit]
replaceExit: Transition {
- XAnimator { from: 0; to: (root.mirrored ? -1 : 1) * -root.width; duration: 400; easing.type: Easing.OutCubic }
+ XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic }
}
//! [replaceExit]
}
diff --git a/src/imports/controls/SwipeDelegate.qml b/src/imports/controls/SwipeDelegate.qml
new file mode 100644
index 00000000..b3cf4714
--- /dev/null
+++ b/src/imports/controls/SwipeDelegate.qml
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import Qt.labs.templates 1.0 as T
+
+T.SwipeDelegate {
+ id: control
+
+ implicitWidth: Math.max(background ? background.implicitWidth : 0,
+ contentItem.implicitWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(background ? background.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
+ indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
+
+ padding: 12
+ spacing: 12
+
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+
+ text: control.text
+ font: control.font
+ color: control.enabled ? "#26282a" : "#bdbebf"
+ elide: Text.ElideRight
+ visible: control.text
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Behavior on x {
+ enabled: !control.pressed
+ NumberAnimation {
+ easing.type: Easing.InOutCubic
+ duration: 400
+ }
+ }
+ }
+ //! [contentItem]
+
+ //! [indicator]
+ indicator: Image {
+ x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
+ y: control.topPadding + (control.availableHeight - height) / 2
+
+ visible: control.checked
+ source: control.checkable ? "qrc:/qt-project.org/imports/Qt/labs/controls/images/check.png" : ""
+ }
+ //! [indicator]
+
+ //! [background]
+ background: Rectangle {
+ color: control.pressed ? "#bdbebf" : "#eeeeee"
+
+ Behavior on x {
+ enabled: !control.pressed
+ NumberAnimation {
+ easing.type: Easing.InOutCubic
+ duration: 400
+ }
+ }
+ }
+ //! [background]
+}
diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml
index 51348e77..01f561a1 100644
--- a/src/imports/controls/Switch.qml
+++ b/src/imports/controls/Switch.qml
@@ -41,13 +41,11 @@ T.Switch {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
spacing: 6
@@ -87,12 +85,10 @@ T.Switch {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -102,5 +98,5 @@ T.Switch {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/TabButton.qml b/src/imports/controls/TabButton.qml
index 178a0a7f..63a88b10 100644
--- a/src/imports/controls/TabButton.qml
+++ b/src/imports/controls/TabButton.qml
@@ -41,20 +41,15 @@ T.TabButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.contentWidth + leftPadding + rightPadding : 0)
+ contentItem.contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.contentHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.contentHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
elide: Text.ElideRight
@@ -63,7 +58,7 @@ T.TabButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/TextArea.qml b/src/imports/controls/TextArea.qml
index 8326fc89..46b6bc6c 100644
--- a/src/imports/controls/TextArea.qml
+++ b/src/imports/controls/TextArea.qml
@@ -67,7 +67,7 @@ T.TextArea {
color: "#c2c2c2"
horizontalAlignment: control.horizontalAlignment
verticalAlignment: control.verticalAlignment
- visible: !control.length && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
+ visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
}
}
diff --git a/src/imports/controls/TextField.qml b/src/imports/controls/TextField.qml
index d9f31b2f..7abf540b 100644
--- a/src/imports/controls/TextField.qml
+++ b/src/imports/controls/TextField.qml
@@ -66,7 +66,7 @@ T.TextField {
color: "#bdbebf"
horizontalAlignment: control.horizontalAlignment
verticalAlignment: control.verticalAlignment
- visible: !control.displayText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
+ visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
}
diff --git a/src/imports/controls/ToolButton.qml b/src/imports/controls/ToolButton.qml
index 314ce966..a610dc2b 100644
--- a/src/imports/controls/ToolButton.qml
+++ b/src/imports/controls/ToolButton.qml
@@ -41,20 +41,15 @@ T.ToolButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
color: control.enabled ? "#26282a" : "#c2c2c2"
@@ -62,7 +57,7 @@ T.ToolButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/controls.pri b/src/imports/controls/controls.pri
index c3391929..669db06e 100644
--- a/src/imports/controls/controls.pri
+++ b/src/imports/controls/controls.pri
@@ -1,4 +1,12 @@
-QML_FILES = \
+HEADERS += \
+ $$PWD/qquickbusyindicatorring_p.h \
+ $$PWD/qquickprogressstrip_p.h
+
+SOURCES += \
+ $$PWD/qquickbusyindicatorring.cpp \
+ $$PWD/qquickprogressstrip.cpp
+
+QML_CONTROLS = \
ApplicationWindow.qml \
BusyIndicator.qml \
Button.qml \
@@ -24,6 +32,7 @@ QML_FILES = \
Slider.qml \
SpinBox.qml \
StackView.qml \
+ SwipeDelegate.qml \
Switch.qml \
SwipeView.qml \
TabBar.qml \
@@ -33,3 +42,5 @@ QML_FILES = \
ToolBar.qml \
ToolButton.qml \
Tumbler.qml
+
+!qtquickcompiler: QML_FILES += $$QML_CONTROLS
diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro
index a9861617..cff26aed 100644
--- a/src/imports/controls/controls.pro
+++ b/src/imports/controls/controls.pro
@@ -1,9 +1,9 @@
-TARGET = qtlabscontrolsplugin
+TARGET = qtquickcontrolsplugin
TARGETPATH = Qt/labs/controls
IMPORT_VERSION = 1.0
QT += qml quick
-QT_PRIVATE += core-private gui-private qml-private quick-private labstemplates-private labscontrols-private
+QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates-private quickcontrols-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
@@ -12,20 +12,20 @@ QMAKE_DOCS = $$PWD/doc/qtlabscontrols.qdocconf
OTHER_FILES += \
qmldir
-HEADERS += \
- $$PWD/qquickbusyindicatorring_p.h \
- $$PWD/qquickprogressstrip_p.h
-
SOURCES += \
- $$PWD/qtlabscontrolsplugin.cpp \
- $$PWD/qquickbusyindicatorring.cpp \
- $$PWD/qquickprogressstrip.cpp
+ $$PWD/qtquickcontrolsplugin.cpp
RESOURCES += \
- $$PWD/qtlabscontrolsplugin.qrc
+ $$PWD/qtquickcontrolsplugin.qrc
include(controls.pri)
!static: include(designer/designer.pri)
+qtquickcompiler {
+ qmlfiles.prefix = /qt-project.org/imports/Qt/labs/controls
+ qmlfiles.files += $$QML_CONTROLS
+ RESOURCES += qmlfiles
+}
+
CONFIG += no_cxx_module
load(qml_plugin)
diff --git a/src/imports/controls/designer/SwipeDelegateSpecifics.qml b/src/imports/controls/designer/SwipeDelegateSpecifics.qml
new file mode 100644
index 00000000..32bf9141
--- /dev/null
+++ b/src/imports/controls/designer/SwipeDelegateSpecifics.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+
+Column {
+ width: parent.width
+
+ ButtonSection {
+ caption: qsTr("Item Delegate")
+ width: parent.width
+ }
+
+ ControlSection {
+ width: parent.width
+ }
+
+ PaddingSection {
+ width: parent.width
+ }
+}
diff --git a/src/imports/controls/designer/designer.pri b/src/imports/controls/designer/designer.pri
index 1589723c..412f6ad6 100644
--- a/src/imports/controls/designer/designer.pri
+++ b/src/imports/controls/designer/designer.pri
@@ -21,6 +21,7 @@ QML_FILES += \
$$PWD/RadioButtonSpecifics.qml \
$$PWD/SliderSpecifics.qml \
$$PWD/SpinBoxSpecifics.qml \
+ $$PWD/SwipeDelegateSpecifics.qml \
$$PWD/SwitchSpecifics.qml \
$$PWD/TextAreaSpecifics.qml \
$$PWD/TextFieldSpecifics.qml \
diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png b/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png
deleted file mode 100644
index 2ed75011..00000000
--- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-pageindicator.png b/src/imports/controls/doc/images/qtlabscontrols-pageindicator.png
deleted file mode 100644
index 3f47fb9f..00000000
--- a/src/imports/controls/doc/images/qtlabscontrols-pageindicator.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-pane-background.png b/src/imports/controls/doc/images/qtlabscontrols-pane-background.png
deleted file mode 100644
index a379d915..00000000
--- a/src/imports/controls/doc/images/qtlabscontrols-pane-background.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png
deleted file mode 100644
index 63da8673..00000000
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-track.png b/src/imports/controls/doc/images/qtlabscontrols-slider-track.png
deleted file mode 100644
index 09869bf1..00000000
--- a/src/imports/controls/doc/images/qtlabscontrols-slider-track.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png b/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png
deleted file mode 100644
index 12b4c348..00000000
--- a/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-applicationwindow-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-applicationwindow-wireframe.png
index d45ae400..d45ae400 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-applicationwindow-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-applicationwindow-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png b/src/imports/controls/doc/images/qtquickcontrols-busyindicator-background.png
index 03cf98d0..03cf98d0 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-busyindicator-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-busyindicator-contentItem.png
index fb14cb86..fb14cb86 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-busyindicator-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif b/src/imports/controls/doc/images/qtquickcontrols-busyindicator.gif
index 31ab2d1c..31ab2d1c 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-busyindicator.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.png b/src/imports/controls/doc/images/qtquickcontrols-busyindicator.png
index e631df32..e631df32 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-busyindicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-background.png b/src/imports/controls/doc/images/qtquickcontrols-button-background.png
index c2703157..c2703157 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-label.png b/src/imports/controls/doc/images/qtquickcontrols-button-contentItem.png
index 73d8f2fb..73d8f2fb 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-button-disabled.png
index 33638d1e..33638d1e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-focused.png b/src/imports/controls/doc/images/qtquickcontrols-button-focused.png
index 24d2cd06..24d2cd06 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-normal.png b/src/imports/controls/doc/images/qtquickcontrols-button-normal.png
index 9a5ea80e..9a5ea80e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-pressed.png b/src/imports/controls/doc/images/qtquickcontrols-button-pressed.png
index c88d57b0..c88d57b0 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button-pressed.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button-pressed.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button.gif b/src/imports/controls/doc/images/qtquickcontrols-button.gif
index 89dcba31..89dcba31 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-button.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-button.png b/src/imports/controls/doc/images/qtquickcontrols-button.png
index d8a39e55..d8a39e55 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-button.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-button.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-background.png
index 4d24fa2f..4d24fa2f 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-checked.png
index 8620b0c2..8620b0c2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-checked.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-contentItem.png
index d5a1ef2e..d5a1ef2e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-disabled.png
index 63669b29..63669b29 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-focused.png
index ea49c721..ea49c721 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-indicator.png
index fe6cd7a2..fe6cd7a2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox-normal.png
index b185fc99..b185fc99 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox.png b/src/imports/controls/doc/images/qtquickcontrols-checkbox.png
index a824949c..a824949c 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-checkbox.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-checkbox.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-background.png b/src/imports/controls/doc/images/qtquickcontrols-combobox-background.png
index 1930034b..1930034b 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-combobox-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-combobox-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-combobox-contentItem.png
index 08c7bfc8..08c7bfc8 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-combobox-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png b/src/imports/controls/doc/images/qtquickcontrols-combobox-delegate.png
index d76776cf..d76776cf 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-combobox-delegate.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png b/src/imports/controls/doc/images/qtquickcontrols-combobox-popup.png
index 5cb32247..5cb32247 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-combobox-popup.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox.png b/src/imports/controls/doc/images/qtquickcontrols-combobox.png
index e687fb0e..e687fb0e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-combobox.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-combobox.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-control.png b/src/imports/controls/doc/images/qtquickcontrols-control.png
new file mode 100644
index 00000000..eb5ee349
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-control.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-default.png b/src/imports/controls/doc/images/qtquickcontrols-default.png
index 144ceacb..144ceacb 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-default.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-default.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-dial-background.png b/src/imports/controls/doc/images/qtquickcontrols-dial-background.png
index ca6c9283..ca6c9283 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-dial-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-dial-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-dial-handle.png b/src/imports/controls/doc/images/qtquickcontrols-dial-handle.png
index b9a8e0d8..b9a8e0d8 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-dial-handle.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-dial-handle.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-dial.png b/src/imports/controls/doc/images/qtquickcontrols-dial.png
index dfe37f87..dfe37f87 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-dial.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-dial.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-drawer-expanded-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-drawer-expanded-wireframe.png
index 8a8078bf..8a8078bf 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-drawer-expanded-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-drawer-expanded-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-drawer-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-drawer-wireframe.png
index d1ef1801..d1ef1801 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-drawer-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-drawer-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-frame-background.png b/src/imports/controls/doc/images/qtquickcontrols-frame-background.png
index 75ad77bd..75ad77bd 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-frame-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-frame-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-frame.png b/src/imports/controls/doc/images/qtquickcontrols-frame.png
index dc14acaf..dc14acaf 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-frame.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-frame.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-gallery-drawer.png b/src/imports/controls/doc/images/qtquickcontrols-gallery-drawer.png
index 57ec1026..57ec1026 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-gallery-drawer.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-gallery-drawer.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-gallery-menu.png b/src/imports/controls/doc/images/qtquickcontrols-gallery-menu.png
index 5b34264e..5b34264e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-gallery-menu.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-gallery-menu.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-gallery-welcome.png b/src/imports/controls/doc/images/qtquickcontrols-gallery-welcome.png
index 5c2bb682..5c2bb682 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-gallery-welcome.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-gallery-welcome.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png b/src/imports/controls/doc/images/qtquickcontrols-groupbox-background.png
index baec44d5..baec44d5 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-groupbox-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png b/src/imports/controls/doc/images/qtquickcontrols-groupbox-checkable.png
index 9b3f32b1..9b3f32b1 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-groupbox-checkable.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png b/src/imports/controls/doc/images/qtquickcontrols-groupbox-label.png
index ea4dfb32..ea4dfb32 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-groupbox-label.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox.png b/src/imports/controls/doc/images/qtquickcontrols-groupbox.png
index c0fc92c7..c0fc92c7 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-groupbox.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-groupbox.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate-background.png
index 8a97d8ee..8a97d8ee 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate-contentItem.png
index 89f094c6..89f094c6 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate-indicator.png
index 029abb00..029abb00 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate.png b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate.png
index 456a0d55..456a0d55 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-itemdelegate.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-label-background.png b/src/imports/controls/doc/images/qtquickcontrols-label-background.png
index 34a638d6..34a638d6 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-label-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-label-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-label.png b/src/imports/controls/doc/images/qtquickcontrols-label.png
index 961ce3e3..961ce3e3 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-label.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-material-button.png b/src/imports/controls/doc/images/qtquickcontrols-material-button.png
index 5181d8b1..5181d8b1 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-material-button.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-material-button.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-material-dark.png b/src/imports/controls/doc/images/qtquickcontrols-material-dark.png
index 8afb2cd6..8afb2cd6 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-material-dark.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-material-dark.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-material.png b/src/imports/controls/doc/images/qtquickcontrols-material.png
index d7ce0e88..d7ce0e88 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-material.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-material.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-menu-contentItem.png
index 4dcf1fac..4dcf1fac 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-menu-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-menu.gif b/src/imports/controls/doc/images/qtquickcontrols-menu.gif
index 93a873a3..93a873a3 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-menu.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-menu.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-menu.png b/src/imports/controls/doc/images/qtquickcontrols-menu.png
index b6446d39..b6446d39 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-menu.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-menu.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-page-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-page-wireframe.png
index d45ae400..d45ae400 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-page-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-page-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-pageindicator-background.png b/src/imports/controls/doc/images/qtquickcontrols-pageindicator-background.png
new file mode 100644
index 00000000..756b87f1
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-pageindicator-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-pageindicator-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-pageindicator-contentItem.png
new file mode 100644
index 00000000..cfce4ffb
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-pageindicator-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-pageindicator-delegate.png b/src/imports/controls/doc/images/qtquickcontrols-pageindicator-delegate.png
new file mode 100644
index 00000000..a1e9a8cd
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-pageindicator-delegate.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-pageindicator.png b/src/imports/controls/doc/images/qtquickcontrols-pageindicator.png
new file mode 100644
index 00000000..872012d0
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-pageindicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-frame-frame.png b/src/imports/controls/doc/images/qtquickcontrols-pane-background.png
index a379d915..a379d915 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-frame-frame.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-pane-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-pane.png b/src/imports/controls/doc/images/qtquickcontrols-pane.png
index fe534424..fe534424 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-pane.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-pane.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.png b/src/imports/controls/doc/images/qtquickcontrols-popup-transformorigin.png
index 4af320fb..4af320fb 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-popup-transformorigin.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png b/src/imports/controls/doc/images/qtquickcontrols-progressbar-background.png
index 59e81b2b..59e81b2b 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-progressbar-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-progressbar-contentItem.png
index 9ce19e92..9ce19e92 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-progressbar-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-progressbar-disabled.png
index 9ce19e92..9ce19e92 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-progressbar-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-progressbar-indeterminate.png b/src/imports/controls/doc/images/qtquickcontrols-progressbar-indeterminate.png
new file mode 100644
index 00000000..ec2e9ae9
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-progressbar-indeterminate.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png b/src/imports/controls/doc/images/qtquickcontrols-progressbar-normal.png
index 9ce19e92..9ce19e92 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-progressbar-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-background.png
index 30295394..30295394 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-checked.png
index 8f5af513..8f5af513 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-checked.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-contentItem.png
index 457555b7..457555b7 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-disabled.png
index 626cd616..626cd616 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-focused.png
index 797e50a9..797e50a9 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-indicator.png
index 0d78a0d5..0d78a0d5 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-normal.png
index f8d0828b..f8d0828b 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton.png b/src/imports/controls/doc/images/qtquickcontrols-radiobutton.png
index 6c217968..6c217968 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-radiobutton.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-background.png
index c045fdbb..c045fdbb 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-disabled.png
index abb033c2..abb033c2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-first-handle-focused.png
index abb033c2..abb033c2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-first-handle-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-first-handle.png
index fb246db3..fb246db3 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-first-handle.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-normal.png
index abb033c2..abb033c2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-second-handle-focused.png
index abb033c2..abb033c2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-second-handle-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-second-handle.png
index a33a6de2..a33a6de2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider-second-handle.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif b/src/imports/controls/doc/images/qtquickcontrols-rangeslider.gif
index 394e8085..394e8085 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.png b/src/imports/controls/doc/images/qtquickcontrols-rangeslider.png
index abb033c2..abb033c2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-rangeslider.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png b/src/imports/controls/doc/images/qtquickcontrols-scrollbar-background.png
index 0b1aa171..0b1aa171 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-scrollbar-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png b/src/imports/controls/doc/images/qtquickcontrols-scrollbar-contentItem.png
index 5d916e66..5d916e66 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-scrollbar-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollbar.png b/src/imports/controls/doc/images/qtquickcontrols-scrollbar.png
index b1abafb5..b1abafb5 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-scrollbar.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-scrollbar.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png b/src/imports/controls/doc/images/qtquickcontrols-scrollindicator-background.png
index e9fa04c7..e9fa04c7 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-scrollindicator-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-scrollindicator-contentItem.png
index 99266362..99266362 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-scrollindicator-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator.png b/src/imports/controls/doc/images/qtquickcontrols-scrollindicator.png
index ea0923cc..ea0923cc 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-scrollindicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-background.png b/src/imports/controls/doc/images/qtquickcontrols-slider-background.png
index 23a754c3..23a754c3 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-slider-disabled.png
index 2e27a604..2e27a604 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-focused.png b/src/imports/controls/doc/images/qtquickcontrols-slider-focused.png
index 2e27a604..2e27a604 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-handle.png b/src/imports/controls/doc/images/qtquickcontrols-slider-handle.png
index 7729ef07..7729ef07 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider-handle.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider-handle.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-normal.png b/src/imports/controls/doc/images/qtquickcontrols-slider-normal.png
index 2e27a604..2e27a604 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider.gif b/src/imports/controls/doc/images/qtquickcontrols-slider.gif
index 7cb84b56..7cb84b56 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider.png b/src/imports/controls/doc/images/qtquickcontrols-slider.png
index 2e27a604..2e27a604 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-slider.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-slider.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png b/src/imports/controls/doc/images/qtquickcontrols-spinbox-background.png
index 74fbab6e..74fbab6e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-spinbox-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-spinbox-contentItem.png
index 81d549c0..81d549c0 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-spinbox-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png b/src/imports/controls/doc/images/qtquickcontrols-spinbox-down.png
index e7c43101..e7c43101 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-spinbox-down.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png b/src/imports/controls/doc/images/qtquickcontrols-spinbox-textual.png
index 4361c492..4361c492 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-spinbox-textual.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png b/src/imports/controls/doc/images/qtquickcontrols-spinbox-up.png
index b9992471..b9992471 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-spinbox-up.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox.png b/src/imports/controls/doc/images/qtquickcontrols-spinbox.png
index 909fbda6..909fbda6 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-spinbox.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-spinbox.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-stackview-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-stackview-wireframe.png
index 65704c25..65704c25 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-stackview-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-stackview-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-background.png b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-background.png
new file mode 100644
index 00000000..07f388bb
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-behind.gif b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-behind.gif
new file mode 100644
index 00000000..97d6a592
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-behind.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-contentItem.png
new file mode 100644
index 00000000..cec6cf15
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-indicator.png
new file mode 100644
index 00000000..1b43928b
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-leading-trailing.gif b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-leading-trailing.gif
new file mode 100644
index 00000000..0641bd14
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate-leading-trailing.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols-swipedelegate.gif b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate.gif
new file mode 100644
index 00000000..86c380b7
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipedelegate.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-swipeview-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-swipeview-indicator.png
index 91786964..91786964 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-swipeview-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipeview-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-swipeview-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-swipeview-wireframe.png
index 7e387c2d..7e387c2d 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-swipeview-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-swipeview-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-background.png b/src/imports/controls/doc/images/qtquickcontrols-switch-background.png
index c3cf20f3..c3cf20f3 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-checked.png b/src/imports/controls/doc/images/qtquickcontrols-switch-checked.png
index 7c678417..7c678417 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-checked.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-checked.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-label.png b/src/imports/controls/doc/images/qtquickcontrols-switch-contentItem.png
index 50f608ab..50f608ab 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-switch-disabled.png
index 15ff76e6..15ff76e6 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-focused.png b/src/imports/controls/doc/images/qtquickcontrols-switch-focused.png
index 9e973d0e..9e973d0e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-switch-indicator.png
index 02b88dde..02b88dde 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-normal.png b/src/imports/controls/doc/images/qtquickcontrols-switch-normal.png
index aac440a0..aac440a0 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch.gif b/src/imports/controls/doc/images/qtquickcontrols-switch.gif
index 5f956304..5f956304 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch.png b/src/imports/controls/doc/images/qtquickcontrols-switch.png
index b9d0812e..b9d0812e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-switch.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-switch.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbar-wireframe.png b/src/imports/controls/doc/images/qtquickcontrols-tabbar-wireframe.png
index 443f6757..443f6757 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tabbar-wireframe.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tabbar-wireframe.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbar.gif b/src/imports/controls/doc/images/qtquickcontrols-tabbar.gif
index 31db1f9e..31db1f9e 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tabbar.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-tabbar.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbar.png b/src/imports/controls/doc/images/qtquickcontrols-tabbar.png
index 44a91d63..44a91d63 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tabbar.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tabbar.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbutton.png b/src/imports/controls/doc/images/qtquickcontrols-tabbutton.png
index 76d1e35c..76d1e35c 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tabbutton.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tabbutton.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-textarea.png b/src/imports/controls/doc/images/qtquickcontrols-textarea.png
index f468bfd4..f468bfd4 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-textarea.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-textarea.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-background.png b/src/imports/controls/doc/images/qtquickcontrols-textfield-background.png
index e345124d..e345124d 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-textfield-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-textfield-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-textfield-disabled.png
index 55034be2..55034be2 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-textfield-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png b/src/imports/controls/doc/images/qtquickcontrols-textfield-focused.png
index bf5ee32a..bf5ee32a 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-textfield-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png b/src/imports/controls/doc/images/qtquickcontrols-textfield-normal.png
index 02bb465a..02bb465a 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-textfield-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield.png b/src/imports/controls/doc/images/qtquickcontrols-textfield.png
index 9ea62acb..9ea62acb 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-textfield.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-textfield.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-background.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-background.png
index 8f390b49..8f390b49 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-checked.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-checked.png
index fa883751..fa883751 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-checked.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-checked.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-disabled.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-disabled.png
index 794692b0..794692b0 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-disabled.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-disabled.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-focused.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-focused.png
index f52e4686..f52e4686 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-focused.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-focused.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-indicator.png
index 97e06e2c..97e06e2c 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-indicator.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-indicator.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-label.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-label.png
index 3eb3ba35..3eb3ba35 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-label.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-normal.png b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-normal.png
index b066c565..b066c565 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-togglebutton-normal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-togglebutton-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png b/src/imports/controls/doc/images/qtquickcontrols-toolbar-background.png
index 12b4c348..12b4c348 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-toolbar-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbar.png b/src/imports/controls/doc/images/qtquickcontrols-toolbar.png
index 3e64b4e4..3e64b4e4 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-toolbar.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-toolbar.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png b/src/imports/controls/doc/images/qtquickcontrols-toolbutton-background.png
index 8dd64031..8dd64031 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-toolbutton-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png b/src/imports/controls/doc/images/qtquickcontrols-toolbutton-contentItem.png
index f4797098..f4797098 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-toolbutton-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbutton.png b/src/imports/controls/doc/images/qtquickcontrols-toolbutton.png
index b350cdba..b350cdba 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-toolbutton.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-toolbutton.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png b/src/imports/controls/doc/images/qtquickcontrols-tumbler-background.png
index 24c200de..24c200de 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tumbler-background.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png b/src/imports/controls/doc/images/qtquickcontrols-tumbler-contentItem.png
index 24c200de..24c200de 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tumbler-contentItem.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png b/src/imports/controls/doc/images/qtquickcontrols-tumbler-delegate.png
index d274d444..d274d444 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tumbler-delegate.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif b/src/imports/controls/doc/images/qtquickcontrols-tumbler-wrap.gif
index 4821a4e8..4821a4e8 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif
+++ b/src/imports/controls/doc/images/qtquickcontrols-tumbler-wrap.gif
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler.png b/src/imports/controls/doc/images/qtquickcontrols-tumbler.png
index e22330a6..e22330a6 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-tumbler.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-tumbler.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-universal-button.png b/src/imports/controls/doc/images/qtquickcontrols-universal-button.png
index 6ddec823..6ddec823 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-universal-button.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-universal-button.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-universal-dark.png b/src/imports/controls/doc/images/qtquickcontrols-universal-dark.png
index 98701550..98701550 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-universal-dark.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-universal-dark.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtlabscontrols-universal.png b/src/imports/controls/doc/images/qtquickcontrols-universal.png
index 89a0f069..89a0f069 100644
--- a/src/imports/controls/doc/images/qtlabscontrols-universal.png
+++ b/src/imports/controls/doc/images/qtquickcontrols-universal.png
Binary files differ
diff --git a/src/imports/controls/doc/qtlabscontrols.qdocconf b/src/imports/controls/doc/qtlabscontrols.qdocconf
index cfd5ec55..626794a7 100644
--- a/src/imports/controls/doc/qtlabscontrols.qdocconf
+++ b/src/imports/controls/doc/qtlabscontrols.qdocconf
@@ -23,7 +23,7 @@ qhp.QtLabsControls.subprojects.qtlabscontrolsqmltypes.indexTitle = Qt Labs Contr
qhp.QtLabsControls.subprojects.qtlabscontrolsqmltypes.selectors = qmlclass
qhp.QtLabsControls.subprojects.qtlabscontrolsqmltypes.sortPages = true
-depends = qtcore qtgui qtdoc qtqml qtquick qtquicklayouts qtquickdialogs qtquickcontrols
+depends = qtcore qtgui qtdoc qtqml qtquick qtquickdialogs qtquickcontrols qmake qtsql qtwidgets
# Specify the install path under QT_INSTALL_EXAMPLES
# Note: paths passed to \example command must contain the parent directory, e.g.
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-frame.qml b/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-frame.qml
deleted file mode 100644
index 49ecc00d..00000000
--- a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-frame.qml
+++ /dev/null
@@ -1,41 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import Qt.labs.controls 1.0
-
-GroupBox {
- width: 100
- height: 100
- title: "GroupBox"
- Rectangle {
- parent: frame
- anchors.fill: parent
- color: 'transparent'
- border.color: 'red'
- }
-}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-pageindicator.qml b/src/imports/controls/doc/snippets/qtlabscontrols-pageindicator.qml
deleted file mode 100644
index f13e1213..00000000
--- a/src/imports/controls/doc/snippets/qtlabscontrols-pageindicator.qml
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import Qt.labs.controls 1.0
-
-Frame {
- width: 100
- height: 100
-
- //! [1]
- PageIndicator {
- count: 5
- currentIndex: 2
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.bottom: parent.bottom
- }
- //! [1]
-}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-indicator.qml b/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-indicator.qml
deleted file mode 100644
index 28eb99bf..00000000
--- a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-indicator.qml
+++ /dev/null
@@ -1,40 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import Qt.labs.controls 1.0
-
-ProgressBar {
- value: 0.5
- Rectangle {
- parent: indicator
- width: indicator.childrenRect.width
- height: indicator.height
- color: "transparent"
- border.color: "red"
- }
-}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-track.qml b/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-track.qml
deleted file mode 100644
index 858cb727..00000000
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-track.qml
+++ /dev/null
@@ -1,39 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import Qt.labs.controls 1.0
-
-RangeSlider {
- first.value: 0.25
- second.value: 0.75
- Rectangle {
- anchors.fill: track
- color: "transparent"
- border.color: "red"
- }
-}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider-background.qml b/src/imports/controls/doc/snippets/qtlabscontrols-slider-background.qml
deleted file mode 100644
index 03f3137f..00000000
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider-background.qml
+++ /dev/null
@@ -1,37 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import Qt.labs.controls 1.0
-
-Slider {
- value: 0.5
- background: Rectangle {
- color: "transparent"
- border.color: "red"
- }
-}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-toolbar-frame.qml b/src/imports/controls/doc/snippets/qtlabscontrols-toolbar-frame.qml
deleted file mode 100644
index b887d464..00000000
--- a/src/imports/controls/doc/snippets/qtlabscontrols-toolbar-frame.qml
+++ /dev/null
@@ -1,38 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import Qt.labs.controls 1.0
-
-ToolBar {
- width: 100
- frame: Rectangle {
- anchors.fill: parent
- color: 'transparent'
- border.color: 'red'
- }
-}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-busyindicator-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-busyindicator-background.qml
index 5ccd8f20..5ccd8f20 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-busyindicator-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-busyindicator-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-busyindicator-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-busyindicator-contentItem.qml
index 8f212c37..8f212c37 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-busyindicator-contentItem.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-busyindicator-contentItem.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-busyindicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-busyindicator.qml
index 703161a4..703161a4 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-busyindicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-busyindicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button-background.qml
index 7c0a6b50..7c0a6b50 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button-contentItem.qml
index 4fbeab08..ee59ab7f 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button-contentItem.qml
@@ -32,7 +32,7 @@ Button {
width: 80
text: "Button"
Rectangle {
- anchors.fill: label
+ anchors.fill: contentItem
color: 'transparent'
border.color: 'red'
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button-disabled.qml
index 13037b8d..13037b8d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button-focused.qml
index ee72caf6..ee72caf6 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button-normal.qml
index 692d9066..692d9066 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button-pressed.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button-pressed.qml
index b5c918db..b5c918db 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button-pressed.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button-pressed.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-button.qml b/src/imports/controls/doc/snippets/qtquickcontrols-button.qml
index 86d339b7..86d339b7 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-button.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-button.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-background.qml
index 566202b5..566202b5 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-checked.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-checked.qml
index 3acb9321..3acb9321 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-checked.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-checked.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-contentItem.qml
index fcb3a49d..bef150a3 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-contentItem.qml
@@ -31,7 +31,7 @@ import Qt.labs.controls 1.0
CheckBox {
text: "CheckBox"
Rectangle {
- anchors.fill: label
+ anchors.fill: contentItem
color: "transparent"
border.color: "red"
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-disabled.qml
index 6069edad..6069edad 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-focused.qml
index a90a42d6..a90a42d6 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-indicator.qml
index ae9a0b0a..ae9a0b0a 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-indicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-indicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-normal.qml
index bc86f927..bc86f927 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox.qml b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox.qml
index 2bf74b42..2bf74b42 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-checkbox.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-checkbox.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-background.qml
index d6715f07..d6715f07 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-contentItem.qml
index 08523088..08523088 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-contentItem.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-contentItem.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-delegate.qml b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-delegate.qml
index 60f56940..60f56940 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-delegate.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-delegate.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-popup.qml b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-popup.qml
index 0fea67d1..0fea67d1 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-combobox-popup.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-combobox-popup.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-combobox.qml b/src/imports/controls/doc/snippets/qtquickcontrols-combobox.qml
index 4d7fe7fd..4d7fe7fd 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-combobox.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-combobox.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-dial-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-dial-background.qml
index 333db1ca..333db1ca 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-dial-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-dial-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-dial-handle.qml b/src/imports/controls/doc/snippets/qtquickcontrols-dial-handle.qml
index 73794cc0..73794cc0 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-dial-handle.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-dial-handle.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-dial.qml b/src/imports/controls/doc/snippets/qtquickcontrols-dial.qml
index b42e418d..b42e418d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-dial.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-dial.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-frame-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-frame-background.qml
index 08084e61..08084e61 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-frame-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-frame-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-frame.qml b/src/imports/controls/doc/snippets/qtquickcontrols-frame.qml
index 7fadc9e5..7fadc9e5 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-frame.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-frame.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox-background.qml
index 480aa8e6..480aa8e6 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-checkable.qml b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox-checkable.qml
index 1c1232c7..1c1232c7 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-checkable.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox-checkable.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox-label.qml
index 53da863b..53da863b 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox-label.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox.qml b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox.qml
index 81b234f4..81b234f4 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-groupbox.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-groupbox.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-background.qml
index 10d5696e..10d5696e 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-contentItem.qml
index 696560a5..43e6f85e 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-contentItem.qml
@@ -33,7 +33,7 @@ ItemDelegate {
checked: true
checkable: true
Rectangle {
- anchors.fill: label
+ anchors.fill: contentItem
color: "transparent"
border.color: "red"
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-indicator.qml
index fb80957d..fb80957d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate-indicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate-indicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate.qml b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate.qml
index d02f722a..d02f722a 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-itemdelegate.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-itemdelegate.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-label-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-label-background.qml
index 55cbf4eb..55cbf4eb 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-label-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-label-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-label.qml
index cb26658d..cb26658d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-label.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-menu-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-menu-contentItem.qml
index 0c270d34..0c270d34 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-menu-contentItem.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-menu-contentItem.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-menu.qml b/src/imports/controls/doc/snippets/qtquickcontrols-menu.qml
index b0f32203..b0f32203 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-menu.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-menu.qml
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-background.qml
new file mode 100644
index 00000000..1c6a53b6
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-background.qml
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+PageIndicator {
+ count: 5
+ currentIndex: 2
+ background: Rectangle {
+ color: 'transparent'
+ border.color: 'red'
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-contentItem.qml
new file mode 100644
index 00000000..b36b78bf
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-contentItem.qml
@@ -0,0 +1,39 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+PageIndicator {
+ count: 5
+ currentIndex: 2
+ Rectangle {
+ anchors.fill: contentItem
+ color: 'transparent'
+ border.color: 'red'
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-frame-frame.qml b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-delegate.qml
index e4c9e32b..39247607 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-frame-frame.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator-delegate.qml
@@ -28,11 +28,11 @@
import QtQuick 2.0
import Qt.labs.controls 1.0
-Frame {
- width: 100
- height: 100
+PageIndicator {
+ count: 5
+ currentIndex: 2
Rectangle {
- parent: frame
+ parent: contentItem.children[0]
anchors.fill: parent
color: 'transparent'
border.color: 'red'
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator.qml
new file mode 100644
index 00000000..c37b37c6
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-pageindicator.qml
@@ -0,0 +1,35 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+//! [1]
+PageIndicator {
+ count: 5
+ currentIndex: 2
+}
+//! [1]
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-pane-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-pane-background.qml
index d1d9f22f..d1d9f22f 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-pane-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-pane-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-pane.qml b/src/imports/controls/doc/snippets/qtquickcontrols-pane.qml
index 09bfa6a0..09bfa6a0 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-pane.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-pane.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-background.qml
index 55e71b81..55e71b81 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-background.qml
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-contentItem.qml
new file mode 100644
index 00000000..0bb1b418
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-contentItem.qml
@@ -0,0 +1,39 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+ProgressBar {
+ value: 0.5
+ Rectangle {
+ parent: contentItem
+ anchors.fill: parent
+ color: "transparent"
+ border.color: "red"
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-disabled.qml
index 0f74ea46..0f74ea46 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-normal.qml
index e1c200b5..e1c200b5 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-progressbar-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-background.qml
index d7c6d258..d7c6d258 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-checked.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-checked.qml
index 49f82a5c..49f82a5c 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-checked.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-checked.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-contentItem.qml
index eab52fbe..14bb7c47 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-contentItem.qml
@@ -31,7 +31,7 @@ import Qt.labs.controls 1.0
RadioButton {
text: "RadioButton"
Rectangle {
- anchors.fill: label
+ anchors.fill: contentItem
color: "transparent"
border.color: "red"
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-disabled.qml
index 1a087593..1a087593 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-focused.qml
index 2ad1cbfc..2ad1cbfc 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-indicator.qml
index d36932dc..d36932dc 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-indicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-indicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-normal.qml
index 8c746468..8c746468 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton.qml b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton.qml
index 8f898d18..8f898d18 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-radiobutton.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-radiobutton.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-background.qml
index 2b8ab5a1..2b8ab5a1 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-disabled.qml
index af167461..af167461 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-first-handle-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-first-handle-focused.qml
index 04081cb8..04081cb8 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-first-handle-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-first-handle-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-first-handle.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-first-handle.qml
index f27f904a..f27f904a 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-first-handle.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-first-handle.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-normal.qml
index 343c24e9..343c24e9 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-second-handle-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-second-handle-focused.qml
index 15da7776..15da7776 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-second-handle-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-second-handle-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-second-handle.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-second-handle.qml
index dd54d2fb..dd54d2fb 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider-second-handle.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider-second-handle.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider.qml b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider.qml
index 343c24e9..343c24e9 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-rangeslider.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-rangeslider.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-scrollbar-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-scrollbar-background.qml
index 90d341b9..90d341b9 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-scrollbar-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-scrollbar-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-scrollbar-handle.qml b/src/imports/controls/doc/snippets/qtquickcontrols-scrollbar-contentItem.qml
index 45cde698..d1ce40d7 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-scrollbar-handle.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-scrollbar-contentItem.qml
@@ -34,7 +34,7 @@ ScrollBar {
active: true
height: 100
Rectangle {
- parent: handle
+ parent: contentItem
anchors.fill: parent
color: "transparent"
border.color: "red"
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-scrollbar.qml b/src/imports/controls/doc/snippets/qtquickcontrols-scrollbar.qml
index b677137d..b677137d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-scrollbar.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-scrollbar.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator-background.qml
index b276e8ae..b276e8ae 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator-contentItem.qml
index 68e0fb33..ef85fe69 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator-indicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator-contentItem.qml
@@ -34,7 +34,7 @@ ScrollIndicator {
active: true
height: 100
Rectangle {
- parent: indicator
+ parent: contentItem
anchors.fill: parent
color: "transparent"
border.color: "red"
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator.qml
index 8efa0eed..8efa0eed 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-scrollindicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-scrollindicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider-track.qml b/src/imports/controls/doc/snippets/qtquickcontrols-slider-background.qml
index 7fb949b8..74c4fbb6 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider-track.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-slider-background.qml
@@ -31,7 +31,7 @@ import Qt.labs.controls 1.0
Slider {
value: 0.5
Rectangle {
- anchors.fill: track
+ anchors.fill: background
color: "transparent"
border.color: "red"
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-slider-disabled.qml
index 57429fb4..57429fb4 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-slider-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-slider-focused.qml
index 69a24b1a..69a24b1a 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-slider-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider-handle.qml b/src/imports/controls/doc/snippets/qtquickcontrols-slider-handle.qml
index 58bd139e..58bd139e 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider-handle.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-slider-handle.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-slider-normal.qml
index 331d076a..331d076a 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-slider-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-slider.qml b/src/imports/controls/doc/snippets/qtquickcontrols-slider.qml
index 331d076a..331d076a 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-slider.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-slider.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-background.qml
index 21d1fe92..21d1fe92 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-contentItem.qml
index 5d1f66f6..5d1f66f6 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-contentItem.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-contentItem.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-down.qml b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-down.qml
index 2294741c..2294741c 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-down.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-down.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-textual.qml b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-textual.qml
index b7d7b9b8..b7d7b9b8 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-textual.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-textual.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-up.qml b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-up.qml
index dc6887c0..dc6887c0 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox-up.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox-up.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox.qml b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox.qml
index a8adfbd6..a8adfbd6 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-spinbox.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-spinbox.qml
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-background.qml
new file mode 100644
index 00000000..be665771
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-background.qml
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+SwipeDelegate {
+ text: "SwipeDelegate"
+ Rectangle {
+ anchors.fill: background
+ color: "transparent"
+ border.color: "red"
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-contentItem.qml
new file mode 100644
index 00000000..897d4792
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-contentItem.qml
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+SwipeDelegate {
+ text: "SwipeDelegate"
+ Rectangle {
+ anchors.fill: contentItem
+ color: "transparent"
+ border.color: "red"
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-indicator.qml
new file mode 100644
index 00000000..22530e4b
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate-indicator.qml
@@ -0,0 +1,40 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import Qt.labs.controls 1.0
+
+SwipeDelegate {
+ text: "SwipeDelegate"
+ checked: true
+ checkable: true
+ Rectangle {
+ anchors.fill: indicator
+ color: "transparent"
+ border.color: "red"
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate.qml b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate.qml
new file mode 100644
index 00000000..97f57dca
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-swipedelegate.qml
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import Qt.labs.controls 1.0
+
+ListView {
+ id: listView
+ width: 100
+ height: 120
+
+ model: ListModel {
+ ListElement { name: "Apple" }
+ ListElement { name: "Orange" }
+ ListElement { name: "Pear" }
+ }
+
+ delegate: SwipeDelegate {
+ id: rootDelegate
+ width: listView.width
+ text: modelData
+
+ ListView.onRemove: SequentialAnimation {
+ PropertyAction {
+ target: rootDelegate
+ property: "ListView.delayRemove"
+ value: true
+ }
+ NumberAnimation {
+ target: rootDelegate
+ property: "height"
+ to: 0
+ easing.type: Easing.InOutQuad
+ }
+ PropertyAction {
+ target: rootDelegate
+ property: "ListView.delayRemove"
+ value: false
+ }
+ }
+
+ onClicked: if (exposure.active) ListView.view.model.remove(index)
+
+ Component {
+ id: removeComponent
+
+ Rectangle {
+ color: rootDelegate.exposed && rootDelegate.pressed ? "#333" : "#444"
+ width: parent.width
+ height: parent.height
+
+ Label {
+ text: "Remove"
+ color: "white"
+ anchors.centerIn: parent
+ }
+ }
+ }
+
+ exposure.left: removeComponent
+ exposure.right: removeComponent
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-swipeview-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-swipeview-indicator.qml
index c3a38b92..c3a38b92 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-swipeview-indicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-swipeview-indicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-background.qml
index 1829bb26..1829bb26 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-checked.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-checked.qml
index 4a2ff8f9..4a2ff8f9 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-checked.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-checked.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-contentItem.qml
index c739bf57..99f2af7e 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-contentItem.qml
@@ -31,7 +31,7 @@ import Qt.labs.controls 1.0
Switch {
text: "Switch"
Rectangle {
- anchors.fill: label
+ anchors.fill: contentItem
color: "transparent"
border.color: "red"
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-disabled.qml
index c84afdb1..c84afdb1 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-focused.qml
index e1b5bd3f..e1b5bd3f 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-indicator.qml
index 12d4f20d..12d4f20d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-indicator.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-indicator.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch-normal.qml
index 9a766524..9a766524 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-switch.qml b/src/imports/controls/doc/snippets/qtquickcontrols-switch.qml
index 9e30f8d5..9e30f8d5 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-switch.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-switch.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-tabbar.qml b/src/imports/controls/doc/snippets/qtquickcontrols-tabbar.qml
index a0282d91..a0282d91 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-tabbar.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-tabbar.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-tabbutton.qml b/src/imports/controls/doc/snippets/qtquickcontrols-tabbutton.qml
index 5412db66..5412db66 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-tabbutton.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-tabbutton.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-textarea.qml b/src/imports/controls/doc/snippets/qtquickcontrols-textarea.qml
index c99fdd13..c99fdd13 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-textarea.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-textarea.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-background.qml
index 87324b2d..87324b2d 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-disabled.qml b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-disabled.qml
index e4359d57..e4359d57 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-disabled.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-disabled.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-focused.qml b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-focused.qml
index 9bbcb8ad..9bbcb8ad 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-focused.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-focused.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-normal.qml b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-normal.qml
index de360a33..de360a33 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-textfield-normal.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-textfield-normal.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-textfield.qml b/src/imports/controls/doc/snippets/qtquickcontrols-textfield.qml
index 838bd111..838bd111 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-textfield.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-textfield.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-toolbar-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-toolbar-background.qml
index 486e841f..486e841f 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-toolbar-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-toolbar-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-toolbar.qml b/src/imports/controls/doc/snippets/qtquickcontrols-toolbar.qml
index 7def9a83..7def9a83 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-toolbar.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-toolbar.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-toolbutton-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-toolbutton-background.qml
index 62338070..62338070 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-toolbutton-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-toolbutton-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-toolbutton-label.qml b/src/imports/controls/doc/snippets/qtquickcontrols-toolbutton-contentItem.qml
index 5a8c3a50..9a25d130 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-toolbutton-label.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-toolbutton-contentItem.qml
@@ -31,7 +31,7 @@ import Qt.labs.controls 1.0
ToolButton {
text: "ToolButton"
Rectangle {
- anchors.fill: label
+ anchors.fill: contentItem
color: 'transparent'
border.color: 'red'
}
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-toolbutton.qml b/src/imports/controls/doc/snippets/qtquickcontrols-toolbutton.qml
index 0db6bfe2..0db6bfe2 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-toolbutton.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-toolbutton.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler-background.qml b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler-background.qml
index 8a423cac..8a423cac 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler-background.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler-background.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler-contentItem.qml b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler-contentItem.qml
index 0e26661e..0e26661e 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler-contentItem.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler-contentItem.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler-delegate.qml b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler-delegate.qml
index cf18fd93..cf18fd93 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler-delegate.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler-delegate.qml
diff --git a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler.qml b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler.qml
index f96ed893..f96ed893 100644
--- a/src/imports/controls/doc/snippets/qtlabscontrols-tumbler.qml
+++ b/src/imports/controls/doc/snippets/qtquickcontrols-tumbler.qml
diff --git a/src/imports/controls/doc/src/qtlabscontrols-buttons.qdoc b/src/imports/controls/doc/src/qtlabscontrols-buttons.qdoc
index 562b21c6..b6610949 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-buttons.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-buttons.qdoc
@@ -39,7 +39,7 @@
\section1 Button Control
- \image qtlabscontrols-button.png
+ \image qtquickcontrols-button.png
\l Button presents a push-button control that can be pushed or clicked
by the user. Buttons are normally used to perform an action, or to answer
@@ -48,7 +48,7 @@
\section1 CheckBox Control
- \image qtlabscontrols-checkbox.png
+ \image qtquickcontrols-checkbox.png
\l CheckBox presents an option button that can be toggled on (checked)
or off (unchecked). Check boxes are typically used to select one or more
@@ -56,7 +56,7 @@
\section1 RadioButton Control
- \image qtlabscontrols-radiobutton.png
+ \image qtquickcontrols-radiobutton.png
\l RadioButton presents an option button that can be toggled on (checked)
or off (unchecked). Radio buttons are typically used to select one option
@@ -64,7 +64,7 @@
\section1 Switch Control
- \image qtlabscontrols-switch.png
+ \image qtquickcontrols-switch.png
\l Switch is an option button that can be dragged or toggled on (checked)
or off (unchecked). Switches are typically used to select between two
@@ -72,7 +72,7 @@
\section1 ToolButton Control
- \image qtlabscontrols-toolbutton.png
+ \image qtquickcontrols-toolbutton.png
\l ToolButton is functionally similar to \l Button, but provides a look
that is more suitable within a \l ToolBar.
diff --git a/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc b/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc
index 803695c9..9503f4d0 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc
@@ -39,58 +39,58 @@
\section1 ApplicationWindow Control
- \image qtlabscontrols-applicationwindow-wireframe.png
+ \image qtquickcontrols-applicationwindow-wireframe.png
\l ApplicationWindow contains optional header and footer items.
\section1 Frame Control
- \image qtlabscontrols-frame.png
+ \image qtquickcontrols-frame.png
\l Frame is used to layout a logical group of controls together, within
a visual frame.
\section1 GroupBox Control
- \image qtlabscontrols-groupbox.png
+ \image qtquickcontrols-groupbox.png
\l GroupBox is used to layout a logical group of controls together,
within a titled visual frame.
\section1 Page Control
- \image qtlabscontrols-page-wireframe.png
+ \image qtquickcontrols-page-wireframe.png
\l Page provides page-specific header and footer items.
\section1 Pane Control
- \image qtlabscontrols-pane.png
+ \image qtquickcontrols-pane.png
\l Pane provides a background color that matches with the application
style and theme.
\section1 StackView Control
- \image qtlabscontrols-stackview-wireframe.png
+ \image qtquickcontrols-stackview-wireframe.png
\l StackView organizes content pages into a stack.
\section1 SwipeView Control
- \image qtlabscontrols-swipeview-wireframe.png
+ \image qtquickcontrols-swipeview-wireframe.png
\l SwipeView organizes content pages into a swipable strip.
\section1 TabBar Control
- \image qtlabscontrols-tabbar-wireframe.png
+ \image qtquickcontrols-tabbar-wireframe.png
\l TabBar organizes content pages into tabs.
\section1 ToolBar Control
- \image qtlabscontrols-toolbar.png
+ \image qtquickcontrols-toolbar.png
\l ToolBar is a container of application-wide and context-sensitive
actions and controls.
diff --git a/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc b/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc
index 4aff46a4..47702132 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc
@@ -43,13 +43,13 @@
\section3 Background
- \image qtlabscontrols-busyindicator-background.png
+ \image qtquickcontrols-busyindicator-background.png
BusyIndicator has no background item by default.
\section3 Content item
- \image qtlabscontrols-busyindicator-contentItem.png
+ \image qtquickcontrols-busyindicator-contentItem.png
\snippet BusyIndicator.qml contentItem
@@ -57,41 +57,41 @@
\section1 Customizing Button
Button consists of two visual items: \l {Control::background}{background}
- and \l {AbstractButton::label}{label}.
+ and \l {Control::contentItem}{content item}.
\section3 Background
- \image qtlabscontrols-button-background.png
+ \image qtquickcontrols-button-background.png
\snippet Button.qml background
- \section3 Label
+ \section3 Content item
- \image qtlabscontrols-button-label.png
+ \image qtquickcontrols-button-contentItem.png
- \snippet Button.qml label
+ \snippet Button.qml contentItem
\section1 Customizing CheckBox
CheckBox consists of three visual items: \l {Control::background}{background},
- \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.
+ \l {Control::contentItem}{contentItem} and \l {AbstractButton::indicator}{indicator}.
\section3 Background
- \image qtlabscontrols-checkbox-background.png
+ \image qtquickcontrols-checkbox-background.png
CheckBox has no background item by default.
- \section3 Label
+ \section3 Content item
- \image qtlabscontrols-checkbox-label.png
+ \image qtquickcontrols-checkbox-contentItem.png
- \snippet CheckBox.qml label
+ \snippet CheckBox.qml contentItem
\section3 Indicator
- \image qtlabscontrols-checkbox-indicator.png
+ \image qtquickcontrols-checkbox-indicator.png
\snippet CheckBox.qml indicator
@@ -104,25 +104,25 @@
\section3 Background
- \image qtlabscontrols-combobox-background.png
+ \image qtquickcontrols-combobox-background.png
\snippet ComboBox.qml background
\section3 Content item
- \image qtlabscontrols-combobox-contentItem.png
+ \image qtquickcontrols-combobox-contentItem.png
\snippet ComboBox.qml contentItem
\section3 Popup
- \image qtlabscontrols-combobox-popup.png
+ \image qtquickcontrols-combobox-popup.png
\snippet ComboBox.qml popup
\section3 Delegate
- \image qtlabscontrols-combobox-delegate.png
+ \image qtquickcontrols-combobox-delegate.png
\snippet ComboBox.qml delegate
@@ -134,13 +134,13 @@
\section3 Background
- \image qtlabscontrols-dial-background.png
+ \image qtquickcontrols-dial-background.png
\snippet Dial.qml background
\section3 Indicator
- \image qtlabscontrols-dial-handle.png
+ \image qtquickcontrols-dial-handle.png
\snippet Dial.qml handle
@@ -162,42 +162,29 @@
\section1 Customizing Frame
- Frame consists of two visual items: \l {Control::background}{background}
- and \l {Frame::frame}{frame}.
+ Frame consists of one visual item: \l {Control::background}{background}.
\section3 Background
- \image qtlabscontrols-frame-background.png
+ \image qtquickcontrols-frame-background.png
- Frame has no background item by default.
-
- \section3 Frame
-
- \image qtlabscontrols-frame-frame.png
-
- \snippet Frame.qml frame
+ \snippet Frame.qml background
\section1 Customizing GroupBox
- GroupBox consists of three visual items: \l {Control::background}{background},
- \l {Frame::frame}{frame} and \l {GroupBox::label}{label}.
+ GroupBox consists of two visual items: \l {Control::background}{background}
+ and \l {GroupBox::label}{label}.
\section3 Background
- \image qtlabscontrols-groupbox-background.png
-
- GroupBox has no background item by default.
+ \image qtquickcontrols-groupbox-background.png
- \section3 Frame
-
- \image qtlabscontrols-groupbox-frame.png
-
- \snippet GroupBox.qml frame
+ \snippet GroupBox.qml background
\section3 Label
- \image qtlabscontrols-groupbox-label.png
+ \image qtquickcontrols-groupbox-label.png
\snippet GroupBox.qml label
@@ -205,24 +192,24 @@
\section1 Customizing ItemDelegate
ItemDelegate consists of three visual items: \l {Control::background}{background},
- \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.
+ \l {Control::contentItem}{content item} and \l {AbstractButton::indicator}{indicator}.
The indicator is only visible for \l {AbstractButton::checkable}{checkable} items.
\section3 Background
- \image qtlabscontrols-itemdelegate-background.png
+ \image qtquickcontrols-itemdelegate-background.png
\snippet ItemDelegate.qml background
- \section3 Label
+ \section3 Content item
- \image qtlabscontrols-itemdelegate-label.png
+ \image qtquickcontrols-itemdelegate-contentItem.png
- \snippet ItemDelegate.qml label
+ \snippet ItemDelegate.qml contentItem
\section3 Indicator
- \image qtlabscontrols-itemdelegate-indicator.png
+ \image qtquickcontrols-itemdelegate-indicator.png
\snippet ItemDelegate.qml indicator
@@ -233,7 +220,7 @@
\section3 Background
- \image qtlabscontrols-label-background.png
+ \image qtquickcontrols-label-background.png
Label has no background item by default.
@@ -244,7 +231,7 @@
\section3 Content item
- \image qtlabscontrols-menu-contentItem.png
+ \image qtquickcontrols-menu-contentItem.png
\snippet Menu.qml contentItem
@@ -257,7 +244,26 @@
\section1 Customizing PageIndicator
- TODO
+ PageIndicator consists of a \l {Control::background}{background}, \l {Control::contentItem}{content item}, and \l {PageIndicator::delegate}{delegate}.
+
+ \section3 Background
+
+ \image qtquickcontrols-pageindicator-background.png
+
+ PageIndicator has no background item by default.
+
+ \section3 Content item
+
+ \image qtquickcontrols-pageindicator-contentItem.png
+
+ \snippet PageIndicator.qml contentItem
+
+ \section3 Delegate
+
+ \image qtquickcontrols-pageindicator-delegate.png
+
+ \snippet PageIndicator.qml delegate
+
\section1 Customizing Pane
@@ -266,7 +272,7 @@
\section3 Background
- \image qtlabscontrols-pane-background.png
+ \image qtquickcontrols-pane-background.png
\snippet Pane.qml background
@@ -274,73 +280,67 @@
\section1 Customizing ProgressBar
ProgressBar consists of two visual items: \l {Control::background}{background}
- and \l {ProgressBar::indicator}{indicator}.
+ and \l {Control::contentItem}{content item}.
\section3 Background
- \image qtlabscontrols-progressbar-background.png
+ \image qtquickcontrols-progressbar-background.png
\snippet ProgressBar.qml background
- \section3 Indicator
+ \section3 Content item
- \image qtlabscontrols-progressbar-indicator.png
+ \image qtquickcontrols-progressbar-contentItem.png
- \snippet ProgressBar.qml indicator
+ \snippet ProgressBar.qml contentItem
\section1 Customizing RadioButton
RadioButton consists of three visual items: \l {Control::background}{background},
- \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.
+ \l {Control::contentItem}{content item} and \l {AbstractButton::indicator}{indicator}.
\section3 Background
- \image qtlabscontrols-radiobutton-background.png
+ \image qtquickcontrols-radiobutton-background.png
RadioButton has no background item by default.
- \section3 Label
+ \section3 Content item
- \image qtlabscontrols-radiobutton-label.png
+ \image qtquickcontrols-radiobutton-contentItem.png
- \snippet RadioButton.qml label
+ \snippet RadioButton.qml contentItem
\section3 Indicator
- \image qtlabscontrols-radiobutton-indicator.png
+ \image qtquickcontrols-radiobutton-indicator.png
\snippet RadioButton.qml indicator
\section1 Customizing RangeSlider
- RangeSlider consists of four visual items:
- \l {Control::background}{background}, \l {RangeSlider::track}{track},
+ RangeSlider consists of three visual items:
+ \l {Control::background}{background},
\l {RangeSlider::first}{first.handle} and
\l {RangeSlider::second.handle}{second.handle}.
\section3 Background
- \image qtlabscontrols-rangeslider-background.png
-
- RangeSlider has no background item by default.
-
- \section3 Track
-
- \image qtlabscontrols-rangeslider-track.png
+ \image qtquickcontrols-rangeslider-background.png
- \snippet RangeSlider.qml track
+ \snippet RangeSlider.qml background
\section3 First Handle
- \image qtlabscontrols-rangeslider-first-handle.png
+ \image qtquickcontrols-rangeslider-first-handle.png
\snippet RangeSlider.qml firstHandle
\section3 Second Handle
- \image qtlabscontrols-rangeslider-second-handle.png
+ \image qtquickcontrols-rangeslider-second-handle.png
\snippet RangeSlider.qml secondHandle
@@ -348,59 +348,53 @@
\section1 Customizing ScrollBar
ScrollBar consists of two visual items: \l {Control::background}{background}
- and \l {ScrollBar::handle}{handle}.
+ and \l {Control::contentItem}{content item}.
\section3 Background
- \image qtlabscontrols-scrollbar-background.png
+ \image qtquickcontrols-scrollbar-background.png
ScrollBar has no background item by default.
- \section3 Handle
+ \section3 Content item
- \image qtlabscontrols-scrollbar-handle.png
+ \image qtquickcontrols-scrollbar-contentItem.png
- \snippet ScrollBar.qml handle
+ \snippet ScrollBar.qml contentItem
\section1 Customizing ScrollIndicator
ScrollIndicator consists of two visual items: \l {Control::background}{background}
- and \l {ScrollIndicator::indicator}{indicator}.
+ and \l {Control::contentItem}{content item}.
\section3 Background
- \image qtlabscontrols-scrollindicator-background.png
+ \image qtquickcontrols-scrollindicator-background.png
ScrollIndicator has no background item by default.
- \section3 Indicator
+ \section3 Content item
- \image qtlabscontrols-scrollindicator-indicator.png
+ \image qtquickcontrols-scrollindicator-contentItem.png
- \snippet ScrollIndicator.qml indicator
+ \snippet ScrollIndicator.qml contentItem
\section1 Customizing Slider
- Slider consists of three visual items: \l {Control::background}{background},
- \l {Slider::track}{track} and \l {Slider::handle}{handle}.
+ Slider consists of two visual items: \l {Control::background}{background},
+ and \l {Slider::handle}{handle}.
\section3 Background
- \image qtlabscontrols-slider-background.png
+ \image qtquickcontrols-slider-background.png
- Slider has no background item by default.
-
- \section3 Track
-
- \image qtlabscontrols-slider-track.png
-
- \snippet Slider.qml track
+ \snippet Slider.qml background
\section3 Handle
- \image qtlabscontrols-slider-handle.png
+ \image qtquickcontrols-slider-handle.png
\snippet Slider.qml handle
@@ -413,25 +407,25 @@
\section3 Background
- \image qtlabscontrols-spinbox-background.png
+ \image qtquickcontrols-spinbox-background.png
\snippet SpinBox.qml background
\section3 Content item
- \image qtlabscontrols-spinbox-contentItem.png
+ \image qtquickcontrols-spinbox-contentItem.png
\snippet SpinBox.qml contentItem
\section3 Down indicator
- \image qtlabscontrols-spinbox-down.png
+ \image qtquickcontrols-spinbox-down.png
\snippet SpinBox.qml down.indicator
\section3 Up indicator
- \image qtlabscontrols-spinbox-up.png
+ \image qtquickcontrols-spinbox-up.png
\snippet SpinBox.qml up.indicator
@@ -466,6 +460,28 @@
\snippet StackView.qml replaceExit
+ \section1 Customizing SwipeDelegate
+
+ SwipeDelegate consists of four visual items: \l {Control::background}{background},
+ \l {Control::contentItem}{content item}, \c exposure.left, and \c exposure.right.
+
+ \section3 Background
+
+ \image qtquickcontrols-swipedelegate-background.png
+
+ \snippet SwipeDelegate.qml background
+
+ \section3 Content item
+
+ \image qtquickcontrols-swipedelegate-contentItem.png
+
+ \snippet SwipeDelegate.qml contentItem
+
+ \section3 Left, right, and behind
+
+ \image qtquickcontrols-swipedelegate.gif
+
+ By default, there are no left, right, or behind items defined.
\section1 Customizing SwipeView
@@ -484,23 +500,23 @@
\section1 Customizing Switch
Switch consists of three visual items: \l {Control::background}{background},
- \l {AbstractButton::label}{label} and \l {AbstractButton::indicator}{indicator}.
+ \l {Control::contentItem}{content item} and \l {AbstractButton::indicator}{indicator}.
\section3 Background
- \image qtlabscontrols-switch-background.png
+ \image qtquickcontrols-switch-background.png
Switch has no background item by default.
- \section3 Label
+ \section3 Content item
- \image qtlabscontrols-switch-label.png
+ \image qtquickcontrols-switch-contentItem.png
- \snippet Switch.qml label
+ \snippet Switch.qml contentItem
\section3 Indicator
- \image qtlabscontrols-switch-indicator.png
+ \image qtquickcontrols-switch-indicator.png
\snippet Switch.qml indicator
@@ -526,45 +542,38 @@
\section3 Background
- \image qtlabscontrols-textfield-background.png
+ \image qtquickcontrols-textfield-background.png
\snippet TextField.qml background
\section1 Customizing ToolBar
- ToolBar consists of two visual items: \l {Control::background}{background} and
- \l {Frame::frame}{frame}.
+ ToolBar consists of one visual item: \l {Control::background}{background}.
\section3 Background
- \image qtlabscontrols-toolbar-background.png
+ \image qtquickcontrols-toolbar-background.png
\snippet ToolBar.qml background
- \section3 Frame
-
- \image qtlabscontrols-toolbar-frame.png
-
- ToolBar has no frame item by default.
-
\section1 Customizing ToolButton
ToolButton consists of two visual items: \l {Control::background}{background}
- and \l {AbstractButton::label}{label}.
+ and \l {Control::contentItem}{content item}.
\section3 Background
- \image qtlabscontrols-toolbutton-background.png
+ \image qtquickcontrols-toolbutton-background.png
\snippet ToolButton.qml background
- \section3 Label
+ \section3 Content item
- \image qtlabscontrols-toolbutton-label.png
+ \image qtquickcontrols-toolbutton-contentItem.png
- \snippet ToolButton.qml label
+ \snippet ToolButton.qml contentItem
\section1 Customizing Tumbler
@@ -575,19 +584,19 @@
\section3 Background
- \image qtlabscontrols-tumbler-background.png
+ \image qtquickcontrols-tumbler-background.png
Tumbler has no background item by default.
\section3 Content Item
- \image qtlabscontrols-tumbler-contentItem.png
+ \image qtquickcontrols-tumbler-contentItem.png
\snippet Tumbler.qml contentItem
\section3 Delegate
- \image qtlabscontrols-tumbler-delegate.png
+ \image qtquickcontrols-tumbler-delegate.png
\snippet Tumbler.qml delegate
*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-default.qdoc b/src/imports/controls/doc/src/qtlabscontrols-default.qdoc
index c885c161..00e70e39 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-default.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-default.qdoc
@@ -35,7 +35,7 @@
performance for Qt Labs Controls. It is built with a minimal amount of Qt
Quick primitives, and keeps animations and transitions to the minimum.
- \image qtlabscontrols-default.png
+ \image qtquickcontrols-default.png
The style is selected by default when running Qt Labs Controls applications.
It is built into the module's resources, so by default it is shipped with
diff --git a/src/imports/controls/doc/src/qtlabscontrols-differences.qdoc b/src/imports/controls/doc/src/qtlabscontrols-differences.qdoc
index 7fcce7a3..ccdab0ef 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-differences.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-differences.qdoc
@@ -55,7 +55,7 @@
is reflected in the structure of the controls project: all visual
implementations sit in the \e imports folder, so that users who want to
create their own complete style can copy the folder and start tweaking.
- Read more about implementing a style plugin \l {TODO}{here}.
+ Read more about implementing a style plugin {TODO}{here}.
In Qt Labs Controls, styles no longer provide components that are
dynamically instantiated by controls, but controls themselves consist of
@@ -155,7 +155,7 @@
\qml
Button {
- label: Label {
+ contentItem: Label {
// ...
}
}
diff --git a/src/imports/controls/doc/src/qtlabscontrols-examples.qdoc b/src/imports/controls/doc/src/qtlabscontrols-examples.qdoc
index 04aabcfa..e7c8367c 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-examples.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-examples.qdoc
@@ -44,25 +44,27 @@
<div class="table"><table style="background:transparent; border:0px">
<tr><td style="border:0px">
\endraw
- \image qtlabscontrols-gallery-welcome.png
+ \image qtquickcontrols-gallery-welcome.png
\caption Welcome Screen
\raw HTML
</td><td style="border:0px">
\endraw
- \image qtlabscontrols-gallery-drawer.png
+ \image qtquickcontrols-gallery-drawer.png
\caption Side Drawer
\raw HTML
</td><td style="border:0px">
\endraw
- \image qtlabscontrols-gallery-menu.png
+ \image qtquickcontrols-gallery-menu.png
\caption Options Menu
\raw HTML
</td></tr>
</table></div>
\endraw
- This example project demonstrates the various UI controls provided by
- \l {Qt Labs Controls}.
+ The gallery example is a simple application with a drawer menu that contains
+ all the \l {Qt Labs Controls}. Each menu item opens a page that shows the
+ graphical appearance of a control, allows you to interact with the control,
+ and explains in which circumstances it is handy to use this control.
\include examples-run.qdocinc
*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-fileselectors.qdoc b/src/imports/controls/doc/src/qtlabscontrols-fileselectors.qdoc
new file mode 100644
index 00000000..4e14c37b
--- /dev/null
+++ b/src/imports/controls/doc/src/qtlabscontrols-fileselectors.qdoc
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qtlabscontrols-fileselectors.html
+ \title Using File Selectors with Qt Labs Controls
+
+ \l {QFileSelector}{File selectors} provide a convenient way of selecting
+ file variants. Qt offers the platform name and the locale as built-in
+ selectors. Qt Labs Controls extends the built-in selectors with the name
+ of the style that an application is running with.
+
+ By using file selectors, style-specific tweaks can be applied without
+ creating a hard dependency to a style. From the available file variants,
+ only the selected QML file is loaded by the QML engine. Each file variant
+ can assume the context, that is, a specific style. This typically leads
+ to some code duplication, but on the other hand, cuts the aforementioned
+ hard dependency to the style, and leads to simpler and more efficient
+ QML code. The same technique is used to implement the \l {Styling Qt
+ Labs Controls}{Qt Labs Controls styles}.
+
+ The following example demonstrates a custom rounded button that has a
+ styled drop shadow in the \l {Material Style}{Material style}, and looks
+ flat in other styles. The files are organized so that the Material version
+ of \c CustomButton.qml is placed into a \c +material sub-directory.
+
+ \code
+ :/main.qml
+ :/CustomButton.qml
+ :/+material/CustomButton.qml
+ \endcode
+
+ By default, \c main.qml will use \c CustomButton.qml for the \c CustomButton
+ type. However, when the application is run with the Material style, the
+ \c material selector will be present and the \c +material/CustomButton.qml
+ version will be used instead.
+
+ \code
+ // main.qml
+ import QtQuick 2.6
+ import Qt.labs.controls 1.0
+
+ ApplicationWindow {
+ id: window
+ visible: true
+
+ CustomButton {
+ text: "Button"
+ anchors.centerIn: parent
+ }
+ }
+ \endcode
+
+ The base implementation of the custom button is a simple rounded
+ flat button.
+
+ \code
+ // CustomButton.qml
+ import QtQuick 2.6
+ import Qt.labs.controls 1.0
+
+ Button {
+ id: control
+
+ background: Rectangle {
+ radius: width / 2
+ implicitWidth: 36
+ implicitHeight: 36
+ color: control.pressed ? "#ccc" : "#eee"
+ }
+ }
+ \endcode
+
+ The Material style's implementation of the custom button imports the
+ Material style, requests a dark theme to get light text, and creates
+ a drop shadow for the background.
+
+ \code
+ // +material/CustomButton.qml
+ import QtQuick 2.6
+ import QtGraphicalEffects 1.0
+ import Qt.labs.controls 1.0
+ import Qt.labs.controls.material 1.0
+
+ Button {
+ id: control
+
+ Material.theme: Material.Dark
+
+ background: Rectangle {
+ implicitWidth: 48
+ implicitHeight: 48
+ color: Material.accentColor
+ radius: width / 2
+
+ layer.enabled: control.enabled
+ layer.effect: DropShadow {
+ verticalOffset: 1
+ color: Material.dropShadowColor
+ samples: control.pressed ? 20 : 10
+ spread: 0.5
+ }
+ }
+ }
+ \endcode
+
+ \note It is recommended to use \l QQmlApplicationEngine, which internally
+ creates a \l QQmlFileSelector instance. This is all that is needed to take
+ QML file selectors in use.
+
+ \section1 Related Information
+ \list
+ \li \l {QFileSelector}
+ \li \l {QQmlFileSelector}
+ \li \l {Styling Qt Labs Controls}
+ \endlist
+*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-index.qdoc b/src/imports/controls/doc/src/qtlabscontrols-index.qdoc
index 2f554db7..e8fa2303 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-index.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-index.qdoc
@@ -48,6 +48,7 @@
\li \l{Getting Started with Qt Labs Controls}
\li \l{Styling Qt Labs Controls}
\li \l{High-DPI Support in Qt Labs Controls}
+ \li \l{Using File Selectors with Qt Labs Controls}
\li \l{Differences between Qt Quick Controls}
\endlist
diff --git a/src/imports/controls/doc/src/qtlabscontrols-indicators.qdoc b/src/imports/controls/doc/src/qtlabscontrols-indicators.qdoc
index 11d440f7..b48a3eaa 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-indicators.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-indicators.qdoc
@@ -39,20 +39,20 @@
\section1 BusyIndicator Control
- \image qtlabscontrols-busyindicator.png
+ \image qtquickcontrols-busyindicator.png
\l BusyIndicator should be used to indicate activity.
\section1 PageIndicator Control
- \image qtlabscontrols-pageindicator.png
+ \image qtquickcontrols-pageindicator.png
\l PageIndicator is used to indicate the currently active page in
a container of multiple pages.
\section1 ScrollBar Control
- \image qtlabscontrols-scrollbar.png
+ \image qtquickcontrols-scrollbar.png
\l ScrollBar is an interactive bar that indicates the current scroll
position, and can be used to scroll to a specific position in a
@@ -60,7 +60,7 @@
\section1 ScrollIndicator Control
- \image qtlabscontrols-scrollindicator.png
+ \image qtquickcontrols-scrollindicator.png
\l ScrollIndicator is a non-interactive indicator that indicates the
current scroll position in a \l Flickable.
diff --git a/src/imports/controls/doc/src/qtlabscontrols-input.qdoc b/src/imports/controls/doc/src/qtlabscontrols-input.qdoc
index 06c0b40d..16401749 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-input.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-input.qdoc
@@ -40,44 +40,44 @@
\section1 ComboBox Control
- \image qtlabscontrols-combobox.png
+ \image qtquickcontrols-combobox.png
\l ComboBox is used to select a value from a drop-down list.
\section1 Dial Control
- \image qtlabscontrols-dial.png
+ \image qtquickcontrols-dial.png
\l Dial is a circular dial that is rotated to set a value.
\section1 TextArea Control
- \image qtlabscontrols-textarea.png
+ \image qtquickcontrols-textarea.png
\l TextArea is a multi-line text editor.
\section1 TextField Control
- \image qtlabscontrols-textfield.png
+ \image qtquickcontrols-textfield.png
\l TextField is a single line text editor.
\section1 Slider Control
- \image qtlabscontrols-slider.png
+ \image qtquickcontrols-slider.png
\l Slider is used to select a value by sliding a handle along a track.
\section1 RangeSlider Control
- \image qtlabscontrols-rangeslider.png
+ \image qtquickcontrols-rangeslider.png
\l RangeSlider is used to select a range specified by two values,
by sliding each handle along a track.
\section1 Tumbler Control
- \image qtlabscontrols-tumbler.png
+ \image qtquickcontrols-tumbler.png
\l Tumbler is a spinnable wheel of items that can be selected.
*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-material.qdoc b/src/imports/controls/doc/src/qtlabscontrols-material.qdoc
index e2cadbda..fb1ad081 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-material.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-material.qdoc
@@ -48,7 +48,7 @@
{Google Material Design Guidelines}. It allows for a unified experience
across platforms and device sizes.
- \image qtlabscontrols-material.png
+ \image qtquickcontrols-material.png
\caption The Material style in light and dark themes
\note The Material style is not a native Android style. The Material
@@ -81,7 +81,7 @@
}
\endqml
\li
- \image qtlabscontrols-material-button.png
+ \image qtquickcontrols-material-button.png
\endtable
Both attributes can be specified for any window or item, and they automatically
@@ -113,16 +113,23 @@
}
\endqml
\li
- \image qtlabscontrols-material-dark.png
+ \image qtquickcontrols-material-dark.png
\endtable
- \note The Material style must be separately imported to gain access to
- these style-specific attributes. It should be noted that regardless of the
- references to the Material style, the same application code runs with any
- other style. The Material style-specific attributes only have an effect
- when the application is run with the Material style. Furthermore, in case
- of explicit Material style-specific references, the Material style must
- be deployed with the application.
+ \section2 Dependency
+
+ The Material style must be separately imported to gain access to the
+ attributes that are specific to the Material style. It should be noted
+ that regardless of the references to the Material style, the same
+ application code runs with any other style. Material-specific attributes
+ only have an effect when the application is run with the Material style.
+
+ If the Material style is imported in a QML file that is always loaded, the
+ Material style must be deployed with the application in order to be able
+ to run the application regardless of which style the application is run with.
+ By using \l {Using File Selectors with Qt Labs Controls}{file selectors},
+ style-specific tweaks can be applied without creating a hard dependency to
+ a style.
\section2 Pre-defined Colors
diff --git a/src/imports/controls/doc/src/qtlabscontrols-menus.qdoc b/src/imports/controls/doc/src/qtlabscontrols-menus.qdoc
index 65b4f04c..8d4aca3e 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-menus.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-menus.qdoc
@@ -37,7 +37,7 @@
\section1 Menu Control
- \image qtlabscontrols-menu.png
+ \image qtquickcontrols-menu.png
\l Menu is a traditional menu.
*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-navigation.qdoc b/src/imports/controls/doc/src/qtlabscontrols-navigation.qdoc
index 8d919d45..7601fbf2 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-navigation.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-navigation.qdoc
@@ -38,19 +38,19 @@
\section1 StackView Control
- \image qtlabscontrols-stackview-wireframe.png
+ \image qtquickcontrols-stackview-wireframe.png
\l StackView provides a stack-based navigation model.
\section1 SwipeView Control
- \image qtlabscontrols-swipeview-wireframe.png
+ \image qtquickcontrols-swipeview-wireframe.png
\l SwipeView provides a swipe-based navigation model.
\section1 TabBar and TabButton Controls
- \image qtlabscontrols-tabbar-wireframe.png
+ \image qtquickcontrols-tabbar-wireframe.png
\l TabBar and \l TabButton provide a tab-based navigation model.
*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-styles.qdoc b/src/imports/controls/doc/src/qtlabscontrols-styles.qdoc
index 858a9105..166edd45 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-styles.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-styles.qdoc
@@ -37,9 +37,38 @@
\section1 Usage
- In order to run an application with a specific style, either pass a command
- line argument, or set an environment variable. Alternatively, the preferred
- style and style-specific attributes can be specified in a configuration file.
+ In order to run an application with a specific style, either configure the
+ style using \l QQuickStyle in C++, pass a command line argument, or set an
+ environment variable. Alternatively, the preferred style and style-specific
+ attributes can be specified in a configuration file.
+
+ The priority of these approaches follows the order they are listed below,
+ from highest to lowest. That is, using QQuickStyle to set the style will
+ always take priority over using the command line argument, for example.
+
+ \section2 Using QQuickStyle in C++
+
+ \l QQuickStyle provides API configuring a specific style. The following
+ example runs a Qt Labs Controls application with the Material style:
+
+ \code
+ #include <QGuiApplication>
+ #include <QQmlApplicationEngine>
+ #include <QQuickStyle>
+
+ int main(int argc, char *argv[])
+ {
+ QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QGuiApplication app(argc, argv);
+
+ QQuickStyle::setStyle("Material");
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl("qrc:/main.qml"));
+
+ return app.exec();
+ }
+ \endcode
\section2 Command line argument
@@ -64,7 +93,7 @@
\section2 Configuration file
- Qt Labs Controls support a special configuration file, \c :/qtlabscontrols.conf,
+ Qt Labs Controls support a special configuration file, \c :/qtquickcontrols.conf,
that is built into an application's resources.
The configuration file can specify the preferred style (may be overridden by either
@@ -94,7 +123,7 @@
\code
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/">
- <file>qtlabscontrols.conf</file>
+ <file>qtquickcontrols.conf</file>
</qresource>
</RCC>
\endcode
@@ -115,5 +144,6 @@
\li \l {Default Style}
\li \l {Material Style}
\li \l {Universal Style}
+ \li \l{Using File Selectors with Qt Labs Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc b/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc
index bf3dcfdc..3943440d 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc
@@ -48,7 +48,7 @@
The Universal style has been designed to look good on all devices, from
phones and tablets to PCs.
- \image qtlabscontrols-universal.png
+ \image qtquickcontrols-universal.png
\caption The Universal style in light and dark themes
\note The Universal style is not a native Windows 10 style. The Universal
@@ -81,7 +81,7 @@
}
\endqml
\li
- \image qtlabscontrols-universal-button.png
+ \image qtquickcontrols-universal-button.png
\endtable
Both attributes can be specified for any window or item, and they automatically
@@ -113,16 +113,23 @@
}
\endqml
\li
- \image qtlabscontrols-universal-dark.png
+ \image qtquickcontrols-universal-dark.png
\endtable
- \note The Universal style must be separately imported to gain access to
- these style-specific attributes. It should be noted that regardless of the
- references to the Universal style, the same application code runs with any
- other style. The Universal style-specific attributes only have an effect
- when the application is run with the Universal style. Furthermore, in case
- of explicit Universal style-specific references, the Universal style must
- be deployed with the application.
+ \section2 Dependency
+
+ The Universal style must be separately imported to gain access to the
+ attributes that are specific to the Universal style. It should be noted
+ that regardless of the references to the Universal style, the same
+ application code runs with any other style. Universal-specific attributes
+ only have an effect when the application is run with the Universal style.
+
+ If the Universal style is imported in a QML file that is always loaded, the
+ Universal style must be deployed with the application in order to be able
+ to run the application regardless of which style the application is run with.
+ By using \l {Using File Selectors with Qt Labs Controls}{file selectors},
+ style-specific tweaks can be applied without creating a hard dependency to
+ a style.
\labs
diff --git a/src/imports/controls/material/Button.qml b/src/imports/controls/material/Button.qml
index a869c915..4dc9bfc5 100644
--- a/src/imports/controls/material/Button.qml
+++ b/src/imports/controls/material/Button.qml
@@ -43,23 +43,18 @@ T.Button {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
// external vertical padding is 6 (to increase touch area)
padding: 12
leftPadding: 8
rightPadding: 8
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
color: !control.enabled ? control.Material.hintTextColor :
@@ -68,7 +63,7 @@ T.Button {
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml
index 230f696f..fd6ef256 100644
--- a/src/imports/controls/material/CheckBox.qml
+++ b/src/imports/controls/material/CheckBox.qml
@@ -37,18 +37,17 @@
import QtQuick 2.6
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
T.CheckBox {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
spacing: 8
topPadding: 14
@@ -143,12 +142,10 @@ T.CheckBox {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -158,5 +155,5 @@ T.CheckBox {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml
index 97724585..46c25b52 100644
--- a/src/imports/controls/material/ComboBox.qml
+++ b/src/imports/controls/material/ComboBox.qml
@@ -36,6 +36,7 @@
import QtQuick 2.6
import QtQuick.Window 2.2
+import Qt.labs.controls 1.0
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
import QtGraphicalEffects 1.0
diff --git a/src/imports/controls/material/Frame.qml b/src/imports/controls/material/Frame.qml
index 9336850d..87e30a18 100644
--- a/src/imports/controls/material/Frame.qml
+++ b/src/imports/controls/material/Frame.qml
@@ -47,20 +47,17 @@ T.Frame {
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
- padding: 6
+ padding: 12
//! [contentItem]
contentItem: Item { }
//! [contentItem]
- //! [frame]
- frame: Rectangle {
- width: parent.width
- height: parent.height
-
+ //! [background]
+ background: Rectangle {
radius: 3
color: "transparent"
border.color: control.Material.frameColor
}
- //! [frame]
+ //! [background]
}
diff --git a/src/imports/controls/material/GroupBox.qml b/src/imports/controls/material/GroupBox.qml
index 3461cb6e..21a3a88d 100644
--- a/src/imports/controls/material/GroupBox.qml
+++ b/src/imports/controls/material/GroupBox.qml
@@ -50,8 +50,8 @@ T.GroupBox {
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
spacing: 6
- padding: 6
- topPadding: 6 + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
+ padding: 12
+ topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
//! [contentItem]
contentItem: Item {}
@@ -71,8 +71,8 @@ T.GroupBox {
}
//! [label]
- //! [frame]
- frame: Rectangle {
+ //! [background]
+ background: Rectangle {
y: control.topPadding - control.padding
width: parent.width
height: parent.height - control.topPadding + control.padding
@@ -81,5 +81,5 @@ T.GroupBox {
color: "transparent"
border.color: control.Material.frameColor
}
- //! [frame]
+ //! [background]
}
diff --git a/src/imports/controls/material/ItemDelegate.qml b/src/imports/controls/material/ItemDelegate.qml
index acfbfb98..132cce3d 100644
--- a/src/imports/controls/material/ItemDelegate.qml
+++ b/src/imports/controls/material/ItemDelegate.qml
@@ -37,18 +37,17 @@
import QtQuick 2.6
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
T.ItemDelegate {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
spacing: 16
@@ -128,12 +127,10 @@ T.ItemDelegate {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored || !control.checkable ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - (control.checkable ? indicator.width + control.spacing : 0)
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -143,7 +140,7 @@ T.ItemDelegate {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/material/MenuItem.qml b/src/imports/controls/material/MenuItem.qml
index 89867e15..e2042894 100644
--- a/src/imports/controls/material/MenuItem.qml
+++ b/src/imports/controls/material/MenuItem.qml
@@ -37,18 +37,17 @@
import QtQuick 2.6
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
T.MenuItem {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
spacing: 16
@@ -128,12 +127,10 @@ T.MenuItem {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored || !control.checkable ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - (control.checkable ? indicator.width + control.spacing : 0)
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -143,7 +140,7 @@ T.MenuItem {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/material/Pane.qml b/src/imports/controls/material/Pane.qml
index b936f08f..20542b61 100644
--- a/src/imports/controls/material/Pane.qml
+++ b/src/imports/controls/material/Pane.qml
@@ -47,7 +47,7 @@ T.Pane {
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
- padding: 6
+ padding: 12
//! [contentItem]
contentItem: Item { }
diff --git a/src/imports/controls/material/ProgressBar.qml b/src/imports/controls/material/ProgressBar.qml
index 52df1660..2493da15 100644
--- a/src/imports/controls/material/ProgressBar.qml
+++ b/src/imports/controls/material/ProgressBar.qml
@@ -43,17 +43,14 @@ T.ProgressBar {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
+ contentItem.implicitHeight + topPadding + bottomPadding)
- //! [indicator]
- indicator: ProgressStrip {
+ //! [contentItem]
+ contentItem: ProgressStrip {
id: strip
- x: control.leftPadding
- y: control.topPadding + (control.availableHeight - height) / 2
- width: control.availableWidth
- height: 4
+ implicitHeight: 4
scale: control.mirrored ? -1 : 1
indeterminate: control.indeterminate
@@ -65,7 +62,7 @@ T.ProgressBar {
running: control.visible && control.indeterminate
}
}
- //! [indicator]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml
index f01d2dc9..4c8831a5 100644
--- a/src/imports/controls/material/RadioButton.qml
+++ b/src/imports/controls/material/RadioButton.qml
@@ -37,18 +37,17 @@
import QtQuick 2.6
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
T.RadioButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
spacing: 8
topPadding: 14
@@ -87,12 +86,10 @@ T.RadioButton {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -102,5 +99,5 @@ T.RadioButton {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/material/RangeSlider.qml b/src/imports/controls/material/RangeSlider.qml
index bf8c16ef..ecafda70 100644
--- a/src/imports/controls/material/RangeSlider.qml
+++ b/src/imports/controls/material/RangeSlider.qml
@@ -37,16 +37,17 @@
import QtQuick 2.6
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
T.RangeSlider {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- Math.max(track ? track.implicitWidth : 0,
+ Math.max(background ? background.implicitWidth : 0,
first.handle ? first.handle.implicitWidth : 0,
second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(track ? track.implicitHeight : 0,
+ Math.max(background ? background.implicitHeight : 0,
first.handle ? first.handle.implicitHeight : 0,
second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding)
@@ -72,8 +73,8 @@ T.RangeSlider {
}
//! [secondHandle]
- //! [track]
- track: Rectangle {
+ //! [background]
+ background: Rectangle {
x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2)
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0)
implicitWidth: horizontal ? 200 : 1
@@ -94,5 +95,5 @@ T.RangeSlider {
color: control.Material.accentColor
}
}
- //! [track]
+ //! [background]
}
diff --git a/src/imports/controls/material/ScrollBar.qml b/src/imports/controls/material/ScrollBar.qml
index 539b9243..7156b933 100644
--- a/src/imports/controls/material/ScrollBar.qml
+++ b/src/imports/controls/material/ScrollBar.qml
@@ -42,14 +42,14 @@ T.ScrollBar {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- handle.implicitWidth + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- handle.implicitHeight + topPadding + bottomPadding)
+ contentItem.implicitHeight + topPadding + bottomPadding)
padding: 2
- //! [handle]
- handle: Rectangle {
+ //! [contentItem]
+ contentItem: Rectangle {
id: handle
implicitWidth: 4
@@ -59,12 +59,6 @@ T.ScrollBar {
visible: control.size < 1.0
opacity: 0.0
- readonly property bool horizontal: control.orientation === Qt.Horizontal
- x: control.leftPadding + (horizontal ? control.position * control.width : 0)
- y: control.topPadding + (horizontal ? 0 : control.position * control.height)
- width: horizontal ? control.size * control.availableWidth : implicitWidth
- height: horizontal ? implicitHeight : control.size * control.availableHeight
-
states: State {
name: "active"
when: control.active
@@ -79,5 +73,5 @@ T.ScrollBar {
}
}
}
- //! [handle]
+ //! [contentItem]
}
diff --git a/src/imports/controls/material/ScrollIndicator.qml b/src/imports/controls/material/ScrollIndicator.qml
index f92b366f..e3a9bd95 100644
--- a/src/imports/controls/material/ScrollIndicator.qml
+++ b/src/imports/controls/material/ScrollIndicator.qml
@@ -42,14 +42,14 @@ T.ScrollIndicator {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- indicator.implicitWidth + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- indicator.implicitHeight + topPadding + bottomPadding)
+ contentItem.implicitHeight + topPadding + bottomPadding)
padding: 2
- //! [indicator]
- indicator: Rectangle {
+ //! [contentItem]
+ contentItem: Rectangle {
id: indicator
implicitWidth: 4
@@ -59,12 +59,6 @@ T.ScrollIndicator {
visible: control.size < 1.0
opacity: 0.0
- readonly property bool horizontal: control.orientation === Qt.Horizontal
- x: control.leftPadding + (horizontal ? control.position * control.width : 0)
- y: control.topPadding + (horizontal ? 0 : control.position * control.height)
- width: horizontal ? control.size * control.availableWidth : implicitWidth
- height: horizontal ? implicitHeight : control.size * control.availableHeight
-
states: State {
name: "active"
when: control.active
@@ -81,5 +75,5 @@ T.ScrollIndicator {
}
]
}
- //! [indicator]
+ //! [contentItem]
}
diff --git a/src/imports/controls/material/Slider.qml b/src/imports/controls/material/Slider.qml
index 139c9151..56f72082 100644
--- a/src/imports/controls/material/Slider.qml
+++ b/src/imports/controls/material/Slider.qml
@@ -37,15 +37,16 @@
import QtQuick 2.6
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
T.Slider {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- Math.max(track ? track.implicitWidth : 0,
+ Math.max(background ? background.implicitWidth : 0,
handle ? handle.implicitWidth : 0) + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(track ? track.implicitHeight : 0,
+ Math.max(background ? background.implicitHeight : 0,
handle ? handle.implicitHeight : 0) + topPadding + bottomPadding)
padding: 6
@@ -60,8 +61,8 @@ T.Slider {
}
//! [handle]
- //! [track]
- track: Rectangle {
+ //! [background]
+ background: Rectangle {
x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2)
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0)
implicitWidth: horizontal ? 200 : 1
@@ -82,5 +83,5 @@ T.Slider {
color: control.Material.accentColor
}
}
- //! [track]
+ //! [background]
}
diff --git a/src/imports/controls/material/SpinBox.qml b/src/imports/controls/material/SpinBox.qml
index 5d2044e6..f6aba60d 100644
--- a/src/imports/controls/material/SpinBox.qml
+++ b/src/imports/controls/material/SpinBox.qml
@@ -75,6 +75,7 @@ T.SpinBox {
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
+ readOnly: !control.editable
validator: control.validator
inputMethodHints: Qt.ImhFormattedNumbersOnly
}
diff --git a/src/imports/controls/material/StackView.qml b/src/imports/controls/material/StackView.qml
index c31c13d2..0eb14832 100644
--- a/src/imports/controls/material/StackView.qml
+++ b/src/imports/controls/material/StackView.qml
@@ -38,12 +38,12 @@ import QtQuick 2.4
import Qt.labs.templates 1.0 as T
T.StackView {
- id: root
+ id: control
//! [popEnter]
popEnter: Transition {
// slide_in_left
- NumberAnimation { property: "x"; from: (root.mirrored ? -0.5 : 0.5) * -root.width; to: 0; duration: 200; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * -control.width; to: 0; duration: 200; easing.type: Easing.OutCubic }
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic }
}
//! [popEnter]
@@ -51,7 +51,7 @@ T.StackView {
//! [popExit]
popExit: Transition {
// slide_out_right
- NumberAnimation { property: "x"; from: 0; to: (root.mirrored ? -0.5 : 0.5) * root.width; duration: 200; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * control.width; duration: 200; easing.type: Easing.OutCubic }
NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic }
}
//! [popExit]
@@ -59,7 +59,7 @@ T.StackView {
//! [pushEnter]
pushEnter: Transition {
// slide_in_right
- NumberAnimation { property: "x"; from: (root.mirrored ? -0.5 : 0.5) * root.width; to: 0; duration: 200; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic }
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic }
}
//! [pushEnter]
@@ -67,7 +67,7 @@ T.StackView {
//! [pushExit]
pushExit: Transition {
// slide_out_left
- NumberAnimation { property: "x"; from: 0; to: (root.mirrored ? -0.5 : 0.5) * -root.width; duration: 200; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic }
NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic }
}
//! [pushExit]
@@ -75,7 +75,7 @@ T.StackView {
//! [replaceEnter]
replaceEnter: Transition {
// slide_in_right
- NumberAnimation { property: "x"; from: (root.mirrored ? -0.5 : 0.5) * root.width; to: 0; duration: 200; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic }
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic }
}
//! [replaceEnter]
@@ -83,7 +83,7 @@ T.StackView {
//! [replaceExit]
replaceExit: Transition {
// slide_out_left
- NumberAnimation { property: "x"; from: 0; to: (root.mirrored ? -0.5 : 0.5) * -root.width; duration: 200; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic }
NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic }
}
//! [replaceExit]
diff --git a/src/imports/controls/material/SwipeDelegate.qml b/src/imports/controls/material/SwipeDelegate.qml
new file mode 100644
index 00000000..600eb480
--- /dev/null
+++ b/src/imports/controls/material/SwipeDelegate.qml
@@ -0,0 +1,168 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import Qt.labs.templates 1.0 as T
+import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
+
+T.SwipeDelegate {
+ id: control
+
+ implicitWidth: Math.max(background ? background.implicitWidth : 0,
+ contentItem.implicitWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(background ? background.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
+ indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
+
+ padding: 16
+ spacing: 16
+
+ //! [indicator]
+ indicator: Rectangle {
+ id: indicatorItem
+ x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2
+ y: control.topPadding + (control.availableHeight - height) / 2
+ implicitWidth: 20
+ implicitHeight: 20
+ color: "transparent"
+ border.color: control.checked ? control.Material.accentColor : control.Material.secondaryTextColor
+ border.width: control.checked ? width / 2 : 2
+ radius: 2
+
+ visible: control.checkable
+
+ Behavior on border.width {
+ NumberAnimation {
+ duration: 100
+ easing.type: Easing.OutCubic
+ }
+ }
+
+ Behavior on border.color {
+ ColorAnimation {
+ duration: 100
+ easing.type: Easing.OutCubic
+ }
+ }
+
+ Ripple {
+ width: parent.width
+ height: width
+ control: control
+ colored: control.checked
+ opacity: control.pressed ? 1 : 0
+ }
+
+ // TODO: This needs to be transparent
+ Image {
+ id: checkImage
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ width: 16
+ height: 16
+ source: "qrc:/qt-project.org/imports/Qt/labs/controls/material/images/check.png"
+ fillMode: Image.PreserveAspectFit
+
+ scale: control.checked ? 1 : 0
+ Behavior on scale { NumberAnimation { duration: 100 } }
+ }
+
+ states: State {
+ name: "checked"
+ when: control.checked
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ NumberAnimation {
+ target: indicatorItem
+ property: "scale"
+ // Go down 2 pixels in size.
+ to: 1 - 2 / indicatorItem.width
+ duration: 120
+ }
+ NumberAnimation {
+ target: indicatorItem
+ property: "scale"
+ to: 1
+ duration: 120
+ }
+ }
+ }
+ }
+ //! [indicator]
+
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
+
+ text: control.text
+ font: control.font
+ color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor
+ elide: Text.ElideRight
+ visible: control.text
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ Behavior on x {
+ enabled: !control.pressed
+ NumberAnimation {
+ easing.type: Easing.InOutCubic
+ duration: 400
+ }
+ }
+ }
+ //! [contentItem]
+
+ //! [background]
+ background: Rectangle {
+ color: !control.enabled ? control.Material.swipeDelegateDisabledColor :
+ (control.pressed ? control.Material.swipeDelegatePressColor :
+ (control.activeFocus || control.hovered ? control.Material.swipeDelegateHoverColor : control.Material.swipeDelegateColor))
+
+ Behavior on x {
+ enabled: !control.pressed
+ NumberAnimation {
+ easing.type: Easing.InOutCubic
+ duration: 400
+ }
+ }
+ }
+ //! [background]
+}
diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml
index 0b9edcab..ca4b1ff6 100644
--- a/src/imports/controls/material/Switch.qml
+++ b/src/imports/controls/material/Switch.qml
@@ -36,6 +36,7 @@
import QtQuick 2.6
import Qt.labs.controls.material 1.0
+import Qt.labs.controls.material.impl 1.0
import Qt.labs.templates 1.0 as T
import QtGraphicalEffects 1.0
@@ -43,13 +44,11 @@ T.Switch {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 8
spacing: 8
@@ -107,12 +106,10 @@ T.Switch {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -122,5 +119,5 @@ T.Switch {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/material/TabBar.qml b/src/imports/controls/material/TabBar.qml
index dbc62512..6a09dbb5 100644
--- a/src/imports/controls/material/TabBar.qml
+++ b/src/imports/controls/material/TabBar.qml
@@ -69,7 +69,7 @@ T.TabBar {
Rectangle {
height: 2
width: parent.width
- y: parent.height - height
+ y: control.position === T.TabBar.Footer ? 0 : parent.height - height
color: control.Material.accentColor
}
}
diff --git a/src/imports/controls/material/TabButton.qml b/src/imports/controls/material/TabButton.qml
index 27b27e3b..496513dd 100644
--- a/src/imports/controls/material/TabButton.qml
+++ b/src/imports/controls/material/TabButton.qml
@@ -42,20 +42,15 @@ T.TabButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.contentWidth + leftPadding + rightPadding : 0)
+ contentItem.contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.contentHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.contentHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 12
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
elide: Text.ElideRight
@@ -63,7 +58,7 @@ T.TabButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Item {
diff --git a/src/imports/controls/material/TextArea.qml b/src/imports/controls/material/TextArea.qml
index a5423727..b6f614c0 100644
--- a/src/imports/controls/material/TextArea.qml
+++ b/src/imports/controls/material/TextArea.qml
@@ -92,7 +92,7 @@ T.TextArea {
horizontalAlignment: control.horizontalAlignment
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
- visible: !control.length && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
+ visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
}
//! [placeholder]
diff --git a/src/imports/controls/material/TextField.qml b/src/imports/controls/material/TextField.qml
index 6a0010f7..eaea710e 100644
--- a/src/imports/controls/material/TextField.qml
+++ b/src/imports/controls/material/TextField.qml
@@ -91,7 +91,7 @@ T.TextField {
horizontalAlignment: control.horizontalAlignment
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
- visible: !control.displayText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
+ visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
}
//! [placeholder]
diff --git a/src/imports/controls/material/ToolButton.qml b/src/imports/controls/material/ToolButton.qml
index ebdc36f2..34a745c1 100644
--- a/src/imports/controls/material/ToolButton.qml
+++ b/src/imports/controls/material/ToolButton.qml
@@ -42,20 +42,15 @@ T.ToolButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor
@@ -63,7 +58,7 @@ T.ToolButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/material/material.pri b/src/imports/controls/material/material.pri
index e41c7d2d..6682c09b 100644
--- a/src/imports/controls/material/material.pri
+++ b/src/imports/controls/material/material.pri
@@ -38,6 +38,7 @@ QML_FILES += \
$$PWD/SliderHandle.qml \
$$PWD/SpinBox.qml \
$$PWD/StackView.qml \
+ $$PWD/SwipeDelegate.qml \
$$PWD/SwipeView.qml \
$$PWD/Switch.qml \
$$PWD/TabBar.qml \
diff --git a/src/imports/controls/material/material.pro b/src/imports/controls/material/material.pro
index 63450289..667235ab 100644
--- a/src/imports/controls/material/material.pro
+++ b/src/imports/controls/material/material.pro
@@ -1,9 +1,9 @@
-TARGET = qtlabsmaterialstyleplugin
+TARGET = qtquickmaterialstyleplugin
TARGETPATH = Qt/labs/controls/material
IMPORT_VERSION = 1.0
QT += qml quick
-QT_PRIVATE += core-private gui-private qml-private quick-private labstemplates-private labscontrols-private
+QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates-private quickcontrols-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
@@ -11,10 +11,10 @@ OTHER_FILES += \
qmldir
SOURCES += \
- $$PWD/qtlabsmaterialstyleplugin.cpp
+ $$PWD/qtquickmaterialstyleplugin.cpp
RESOURCES += \
- $$PWD/qtlabsmaterialstyleplugin.qrc
+ $$PWD/qtquickmaterialstyleplugin.qrc
include(material.pri)
diff --git a/src/imports/controls/material/qmldir b/src/imports/controls/material/qmldir
index d90e75d8..f8666f9e 100644
--- a/src/imports/controls/material/qmldir
+++ b/src/imports/controls/material/qmldir
@@ -1,5 +1,5 @@
module Qt.labs.controls.material
-plugin qtlabsmaterialstyleplugin
-classname QtLabsMaterialStylePlugin
+plugin qtquickmaterialstyleplugin
+classname QtQuickMaterialStylePlugin
depends Qt.labs.controls 1.0
depends QtGraphicalEffects 1.0
diff --git a/src/imports/controls/material/qquickmaterialprogressring.cpp b/src/imports/controls/material/qquickmaterialprogressring.cpp
index c11a347f..d21bb0b6 100644
--- a/src/imports/controls/material/qquickmaterialprogressring.cpp
+++ b/src/imports/controls/material/qquickmaterialprogressring.cpp
@@ -67,11 +67,11 @@ public:
QQuickMaterialRingAnimatorJob();
~QQuickMaterialRingAnimatorJob();
- void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
- void updateCurrentTime(int time) Q_DECL_OVERRIDE;
- void writeBack() Q_DECL_OVERRIDE;
- void nodeWasDestroyed() Q_DECL_OVERRIDE;
- void afterNodeSync() Q_DECL_OVERRIDE;
+ void initialize(QQuickAnimatorController *controller) override;
+ void updateCurrentTime(int time) override;
+ void writeBack() override;
+ void nodeWasDestroyed() override;
+ void afterNodeSync() override;
private:
qreal m_devicePixelRatio;
@@ -134,11 +134,12 @@ QColor QQuickMaterialProgressRing::color() const
void QQuickMaterialProgressRing::setColor(QColor color)
{
- if (m_color != color) {
- m_color = color;
- update();
- emit colorChanged();
- }
+ if (m_color == color)
+ return;
+
+ m_color = color;
+ update();
+ emit colorChanged();
}
static const int spanAnimationDuration = 700;
@@ -167,8 +168,8 @@ QQuickAnimatorJob *QQuickMaterialRingAnimator::createJob() const
QQuickMaterialRingAnimatorJob::QQuickMaterialRingAnimatorJob() :
m_devicePixelRatio(1.0),
- m_containerNode(Q_NULLPTR),
- m_window(Q_NULLPTR)
+ m_containerNode(nullptr),
+ m_window(nullptr)
{
}
@@ -258,8 +259,8 @@ void QQuickMaterialRingAnimatorJob::writeBack()
void QQuickMaterialRingAnimatorJob::nodeWasDestroyed()
{
- m_containerNode = Q_NULLPTR;
- m_window = Q_NULLPTR;
+ m_containerNode = nullptr;
+ m_window = nullptr;
}
void QQuickMaterialRingAnimatorJob::afterNodeSync()
diff --git a/src/imports/controls/material/qquickmaterialprogressring_p.h b/src/imports/controls/material/qquickmaterialprogressring_p.h
index 6f4ebc6b..a829f948 100644
--- a/src/imports/controls/material/qquickmaterialprogressring_p.h
+++ b/src/imports/controls/material/qquickmaterialprogressring_p.h
@@ -60,7 +60,7 @@ class QQuickMaterialProgressRing : public QQuickItem
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
public:
- explicit QQuickMaterialProgressRing(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickMaterialProgressRing(QQuickItem *parent = nullptr);
~QQuickMaterialProgressRing();
QColor color() const;
@@ -70,7 +70,7 @@ Q_SIGNALS:
void colorChanged();
protected:
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
private:
QColor m_color;
@@ -79,11 +79,11 @@ private:
class QQuickMaterialRingAnimator : public QQuickAnimator
{
public:
- QQuickMaterialRingAnimator(QObject *parent = Q_NULLPTR);
+ QQuickMaterialRingAnimator(QObject *parent = nullptr);
protected:
- QString propertyName() const Q_DECL_OVERRIDE;
- QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
+ QString propertyName() const override;
+ QQuickAnimatorJob *createJob() const override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/material/qquickmaterialprogressstrip.cpp b/src/imports/controls/material/qquickmaterialprogressstrip.cpp
index 1d888183..1d3ffc20 100644
--- a/src/imports/controls/material/qquickmaterialprogressstrip.cpp
+++ b/src/imports/controls/material/qquickmaterialprogressstrip.cpp
@@ -54,11 +54,11 @@ class QQuickMaterialProgressStripAnimatorJob : public QQuickAnimatorJob
public:
QQuickMaterialProgressStripAnimatorJob();
- void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
- void updateCurrentTime(int time) Q_DECL_OVERRIDE;
- void writeBack() Q_DECL_OVERRIDE;
- void nodeWasDestroyed() Q_DECL_OVERRIDE;
- void afterNodeSync() Q_DECL_OVERRIDE;
+ void initialize(QQuickAnimatorController *controller) override;
+ void updateCurrentTime(int time) override;
+ void writeBack() override;
+ void nodeWasDestroyed() override;
+ void afterNodeSync() override;
void moveNode(QSGTransformNode *node, const QRectF &geometry, qreal progress);
@@ -66,7 +66,7 @@ private:
QSGNode *m_node;
};
-QQuickMaterialProgressStripAnimatorJob::QQuickMaterialProgressStripAnimatorJob() : m_node(Q_NULLPTR)
+QQuickMaterialProgressStripAnimatorJob::QQuickMaterialProgressStripAnimatorJob() : m_node(nullptr)
{
}
@@ -111,7 +111,7 @@ void QQuickMaterialProgressStripAnimatorJob::writeBack()
void QQuickMaterialProgressStripAnimatorJob::nodeWasDestroyed()
{
- m_node = Q_NULLPTR;
+ m_node = nullptr;
}
void QQuickMaterialProgressStripAnimatorJob::afterNodeSync()
@@ -207,9 +207,13 @@ QSGNode *QQuickMaterialProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePa
{
QQuickItemPrivate *d = QQuickItemPrivate::get(this);
+ QRectF bounds = boundingRect();
+ bounds.setHeight(implicitHeight());
+ bounds.moveTop((height() - bounds.height()) / 2.0);
+
if (!oldNode)
- oldNode = new QSGSimpleRectNode(boundingRect(), Qt::transparent);
- static_cast<QSGSimpleRectNode *>(oldNode)->setRect(boundingRect());
+ oldNode = new QSGSimpleRectNode(bounds, Qt::transparent);
+ static_cast<QSGSimpleRectNode *>(oldNode)->setRect(bounds);
const int count = m_indeterminate ? 2 : 1;
const qreal w = m_indeterminate ? 0 : m_progress * width();
@@ -230,7 +234,7 @@ QSGNode *QQuickMaterialProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePa
QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(transformNode->firstChild());
Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType);
- rectNode->setRect(QRectF(0, 0, w, height()));
+ rectNode->setRect(QRectF(0, bounds.y(), w, bounds.height()));
rectNode->setColor(m_color);
rectNode->update();
diff --git a/src/imports/controls/material/qquickmaterialprogressstrip_p.h b/src/imports/controls/material/qquickmaterialprogressstrip_p.h
index d0618af6..38333ee5 100644
--- a/src/imports/controls/material/qquickmaterialprogressstrip_p.h
+++ b/src/imports/controls/material/qquickmaterialprogressstrip_p.h
@@ -61,7 +61,7 @@ class QQuickMaterialProgressStrip : public QQuickItem
Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL)
public:
- QQuickMaterialProgressStrip(QQuickItem *parent = Q_NULLPTR);
+ QQuickMaterialProgressStrip(QQuickItem *parent = nullptr);
QColor color() const;
void setColor(const QColor &color);
@@ -73,7 +73,7 @@ public:
void setIndeterminate(bool indeterminate);
protected:
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
private:
QColor m_color;
@@ -86,11 +86,11 @@ class QQuickMaterialStripAnimator : public QQuickAnimator
Q_OBJECT
public:
- QQuickMaterialStripAnimator(QObject *parent = Q_NULLPTR);
+ QQuickMaterialStripAnimator(QObject *parent = nullptr);
protected:
- QString propertyName() const Q_DECL_OVERRIDE;
- QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
+ QString propertyName() const override;
+ QQuickAnimatorJob *createJob() const override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp
index 7355c2d6..e73aaef5 100644
--- a/src/imports/controls/material/qquickmaterialstyle.cpp
+++ b/src/imports/controls/material/qquickmaterialstyle.cpp
@@ -39,7 +39,7 @@
#include <QtCore/qdebug.h>
#include <QtCore/qsettings.h>
#include <QtQml/qqmlinfo.h>
-#include <QtLabsControls/private/qquickstyle_p.h>
+#include <QtQuickControls/private/qquickstyleattached_p.h>
QT_BEGIN_NAMESPACE
@@ -395,6 +395,14 @@ static const QRgb flatButtonPressColorLight = 0x66999999;
static const QRgb flatButtonPressColorDark = 0x3FCCCCCC;
static const QRgb flatButtonFocusColorLight = 0x33CCCCCC;
static const QRgb flatButtonFocusColorDark = 0x26CCCCCC;
+static const QRgb swipeDelegateColorLight = 0xFFD6D7D7;
+static const QRgb swipeDelegateColorDark = 0xFF525252;
+static const QRgb swipeDelegateHoverColorLight = 0xFFDFDFDF;
+static const QRgb swipeDelegateHoverColorDark = 0xFF5D5D5D;
+static const QRgb swipeDelegatePressColorLight = 0xFFCFCFCF;
+static const QRgb swipeDelegatePressColorDark = 0xFF484848;
+static const QRgb swipeDelegateDisabledColorLight = 0xFFEFEFEF;
+static const QRgb swipeDelegateDisabledColorDark = 0xFF7C7C7C;
static const QRgb frameColorLight = hintTextColorLight;
static const QRgb frameColorDark = hintTextColorDark;
static const QRgb switchUncheckedTrackColorLight = 0x42000000;
@@ -415,7 +423,7 @@ static QColor alphaBlend(const QColor &bg, const QColor &fg)
return result;
}
-QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickStyle(parent),
+QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickStyleAttached(parent),
m_explicitTheme(false),
m_explicitPrimary(false),
m_explicitAccent(false),
@@ -441,27 +449,30 @@ QQuickMaterialStyle::Theme QQuickMaterialStyle::theme() const
void QQuickMaterialStyle::setTheme(Theme theme)
{
m_explicitTheme = true;
- if (m_theme != theme) {
- m_theme = theme;
- propagateTheme();
- emit themeChanged();
- emit paletteChanged();
- }
+ if (m_theme == theme)
+ return;
+
+ m_theme = theme;
+ propagateTheme();
+ emit themeChanged();
+ emit paletteChanged();
}
void QQuickMaterialStyle::inheritTheme(Theme theme)
{
- if (!m_explicitTheme && m_theme != theme) {
- m_theme = theme;
- propagateTheme();
- emit themeChanged();
- emit paletteChanged();
- }
+ if (m_explicitTheme || m_theme == theme)
+ return;
+
+ m_theme = theme;
+ propagateTheme();
+ emit themeChanged();
+ emit paletteChanged();
}
void QQuickMaterialStyle::propagateTheme()
{
- foreach (QQuickStyle *child, childStyles()) {
+ const auto styles = childStyles();
+ for (QQuickStyleAttached *child : styles) {
QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
if (material)
material->inheritTheme(m_theme);
@@ -470,11 +481,12 @@ void QQuickMaterialStyle::propagateTheme()
void QQuickMaterialStyle::resetTheme()
{
- if (m_explicitTheme) {
- m_explicitTheme = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle());
- inheritTheme(material ? material->theme() : defaultTheme);
- }
+ if (!m_explicitTheme)
+ return;
+
+ m_explicitTheme = false;
+ QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle());
+ inheritTheme(material ? material->theme() : defaultTheme);
}
QVariant QQuickMaterialStyle::primary() const
@@ -509,28 +521,31 @@ void QQuickMaterialStyle::setPrimary(const QVariant &var)
}
m_explicitPrimary = true;
- if (m_primary != primary) {
- m_customPrimary = custom;
- m_primary = primary;
- propagatePrimary();
- emit primaryChanged();
- emit paletteChanged();
- }
+ if (m_primary == primary)
+ return;
+
+ m_customPrimary = custom;
+ m_primary = primary;
+ propagatePrimary();
+ emit primaryChanged();
+ emit paletteChanged();
}
void QQuickMaterialStyle::inheritPrimary(uint primary, bool custom)
{
- if (!m_explicitPrimary && m_primary != primary) {
- m_customPrimary = custom;
- m_primary = primary;
- propagatePrimary();
- emit primaryChanged();
- }
+ if (m_explicitPrimary || m_primary == primary)
+ return;
+
+ m_customPrimary = custom;
+ m_primary = primary;
+ propagatePrimary();
+ emit primaryChanged();
}
void QQuickMaterialStyle::propagatePrimary()
{
- foreach (QQuickStyle *child, childStyles()) {
+ const auto styles = childStyles();
+ for (QQuickStyleAttached *child : styles) {
QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
if (material)
material->inheritPrimary(m_primary, m_customPrimary);
@@ -539,12 +554,13 @@ void QQuickMaterialStyle::propagatePrimary()
void QQuickMaterialStyle::resetPrimary()
{
- if (m_explicitPrimary) {
- m_customPrimary = false;
- m_explicitPrimary = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle());
- inheritPrimary(material ? material->m_primary : defaultPrimary, true);
- }
+ if (!m_explicitPrimary)
+ return;
+
+ m_customPrimary = false;
+ m_explicitPrimary = false;
+ QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle());
+ inheritPrimary(material ? material->m_primary : defaultPrimary, true);
}
QVariant QQuickMaterialStyle::accent() const
@@ -579,28 +595,31 @@ void QQuickMaterialStyle::setAccent(const QVariant &var)
}
m_explicitAccent = true;
- if (m_accent != accent) {
- m_customAccent = custom;
- m_accent = accent;
- propagateAccent();
- emit accentChanged();
- emit paletteChanged();
- }
+ if (m_accent == accent)
+ return;
+
+ m_customAccent = custom;
+ m_accent = accent;
+ propagateAccent();
+ emit accentChanged();
+ emit paletteChanged();
}
void QQuickMaterialStyle::inheritAccent(uint accent, bool custom)
{
- if (!m_explicitAccent && m_accent != accent) {
- m_customAccent = custom;
- m_accent = accent;
- propagateAccent();
- emit accentChanged();
- }
+ if (m_explicitAccent || m_accent == accent)
+ return;
+
+ m_customAccent = custom;
+ m_accent = accent;
+ propagateAccent();
+ emit accentChanged();
}
void QQuickMaterialStyle::propagateAccent()
{
- foreach (QQuickStyle *child, childStyles()) {
+ const auto styles = childStyles();
+ for (QQuickStyleAttached *child : styles) {
QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
if (material)
material->inheritAccent(m_accent, m_customAccent);
@@ -609,12 +628,13 @@ void QQuickMaterialStyle::propagateAccent()
void QQuickMaterialStyle::resetAccent()
{
- if (m_explicitAccent) {
- m_customAccent = false;
- m_explicitAccent = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle());
- inheritAccent(material ? material->m_accent : defaultAccent, true);
- }
+ if (!m_explicitAccent)
+ return;
+
+ m_customAccent = false;
+ m_explicitAccent = false;
+ QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle());
+ inheritAccent(material ? material->m_accent : defaultAccent, true);
}
QColor QQuickMaterialStyle::primaryColor() const
@@ -730,6 +750,26 @@ QColor QQuickMaterialStyle::flatButtonFocusColor() const
return QColor::fromRgba(m_theme == Light ? flatButtonFocusColorLight : flatButtonFocusColorDark);
}
+QColor QQuickMaterialStyle::swipeDelegateColor() const
+{
+ return QColor::fromRgba(m_theme == Light ? swipeDelegateColorLight : swipeDelegateColorDark);
+}
+
+QColor QQuickMaterialStyle::swipeDelegateHoverColor() const
+{
+ return QColor::fromRgba(m_theme == Light ? swipeDelegateHoverColorLight : swipeDelegateHoverColorDark);
+}
+
+QColor QQuickMaterialStyle::swipeDelegatePressColor() const
+{
+ return QColor::fromRgba(m_theme == Light ? swipeDelegatePressColorLight : swipeDelegatePressColorDark);
+}
+
+QColor QQuickMaterialStyle::swipeDelegateDisabledColor() const
+{
+ return QColor::fromRgba(m_theme == Light ? swipeDelegateDisabledColorLight : swipeDelegateDisabledColorDark);
+}
+
QColor QQuickMaterialStyle::frameColor() const
{
return QColor::fromRgba(m_theme == Light ? frameColorLight : frameColorDark);
@@ -899,7 +939,7 @@ QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const
}
}
-void QQuickMaterialStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent)
+void QQuickMaterialStyle::parentStyleChange(QQuickStyleAttached *newParent, QQuickStyleAttached *oldParent)
{
Q_UNUSED(oldParent);
QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent);
@@ -921,7 +961,7 @@ void QQuickMaterialStyle::init()
{
static bool defaultsInitialized = false;
if (!defaultsInitialized) {
- QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Material"));
+ QSharedPointer<QSettings> settings = QQuickStyleAttached::settings(QStringLiteral("Material"));
if (!settings.isNull()) {
bool ok = false;
QByteArray value = settings->value(QStringLiteral("Theme")).toByteArray();
@@ -964,7 +1004,7 @@ void QQuickMaterialStyle::init()
defaultsInitialized = true;
}
- QQuickStyle::init(); // TODO: lazy init?
+ QQuickStyleAttached::init(); // TODO: lazy init?
}
QT_END_NAMESPACE
diff --git a/src/imports/controls/material/qquickmaterialstyle_p.h b/src/imports/controls/material/qquickmaterialstyle_p.h
index f92bfe9d..aa8aa9f4 100644
--- a/src/imports/controls/material/qquickmaterialstyle_p.h
+++ b/src/imports/controls/material/qquickmaterialstyle_p.h
@@ -49,13 +49,13 @@
//
#include <QtGui/qcolor.h>
-#include <QtLabsControls/private/qquickstyle_p.h>
+#include <QtQuickControls/private/qquickstyleattached_p.h>
QT_BEGIN_NAMESPACE
class QQuickMaterialStylePrivate;
-class QQuickMaterialStyle : public QQuickStyle
+class QQuickMaterialStyle : public QQuickStyleAttached
{
Q_OBJECT
Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
@@ -81,6 +81,10 @@ class QQuickMaterialStyle : public QQuickStyle
Q_PROPERTY(QColor raisedHighlightedButtonDisabledColor READ raisedHighlightedButtonDisabledColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor flatButtonPressColor READ flatButtonPressColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor flatButtonFocusColor READ flatButtonFocusColor NOTIFY paletteChanged FINAL)
+ Q_PROPERTY(QColor swipeDelegateColor READ swipeDelegateColor NOTIFY paletteChanged FINAL)
+ Q_PROPERTY(QColor swipeDelegateHoverColor READ swipeDelegateHoverColor NOTIFY paletteChanged FINAL)
+ Q_PROPERTY(QColor swipeDelegatePressColor READ swipeDelegatePressColor NOTIFY paletteChanged FINAL)
+ Q_PROPERTY(QColor swipeDelegateDisabledColor READ swipeDelegateDisabledColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor frameColor READ frameColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor checkBoxUncheckedRippleColor READ checkBoxUncheckedRippleColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor checkBoxCheckedRippleColor READ checkBoxCheckedRippleColor NOTIFY paletteChanged FINAL)
@@ -146,7 +150,7 @@ public:
Q_ENUM(Color)
Q_ENUM(Shade)
- explicit QQuickMaterialStyle(QObject *parent = Q_NULLPTR);
+ explicit QQuickMaterialStyle(QObject *parent = nullptr);
static QQuickMaterialStyle *qmlAttachedProperties(QObject *object);
@@ -188,6 +192,10 @@ public:
QColor raisedHighlightedButtonDisabledColor() const;
QColor flatButtonPressColor() const;
QColor flatButtonFocusColor() const;
+ QColor swipeDelegateColor() const;
+ QColor swipeDelegateHoverColor() const;
+ QColor swipeDelegatePressColor() const;
+ QColor swipeDelegateDisabledColor() const;
QColor frameColor() const;
QColor checkBoxUncheckedRippleColor() const;
QColor checkBoxCheckedRippleColor() const;
@@ -214,7 +222,7 @@ Q_SIGNALS:
void paletteChanged();
protected:
- void parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent) Q_DECL_OVERRIDE;
+ void parentStyleChange(QQuickStyleAttached *newParent, QQuickStyleAttached *oldParent) override;
private:
void init();
diff --git a/src/imports/controls/material/qquickmaterialtheme.cpp b/src/imports/controls/material/qquickmaterialtheme.cpp
index 5c89d382..8fdc912c 100644
--- a/src/imports/controls/material/qquickmaterialtheme.cpp
+++ b/src/imports/controls/material/qquickmaterialtheme.cpp
@@ -53,6 +53,7 @@ QQuickMaterialTheme::QQuickMaterialTheme(QPlatformTheme *theme)
buttonFont.setFamily(font.family());
itemViewFont.setFamily(font.family());
menuItemFont.setFamily(font.family());
+ editorFont.setFamily(font.family());
}
systemFont.setPixelSize(14);
@@ -65,10 +66,8 @@ QQuickMaterialTheme::QQuickMaterialTheme(QPlatformTheme *theme)
itemViewFont.setWeight(QFont::Medium);
menuItemFont.setPixelSize(16);
-}
-QQuickMaterialTheme::~QQuickMaterialTheme()
-{
+ editorFont.setPixelSize(16);
}
const QFont *QQuickMaterialTheme::font(QPlatformTheme::Font type) const
@@ -83,6 +82,8 @@ const QFont *QQuickMaterialTheme::font(QPlatformTheme::Font type) const
case QPlatformTheme::MenuItemFont:
case QPlatformTheme::ComboMenuItemFont:
return &menuItemFont;
+ case QPlatformTheme::EditorFont:
+ return &editorFont;
default:
return &systemFont;
}
diff --git a/src/imports/controls/material/qquickmaterialtheme_p.h b/src/imports/controls/material/qquickmaterialtheme_p.h
index 28008a14..f88842dd 100644
--- a/src/imports/controls/material/qquickmaterialtheme_p.h
+++ b/src/imports/controls/material/qquickmaterialtheme_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKMATERIALTHEME_H
-#define QQUICKMATERIALTHEME_H
+#ifndef QQUICKMATERIALTHEME_P_H
+#define QQUICKMATERIALTHEME_P_H
//
// W A R N I N G
@@ -48,28 +48,26 @@
// We mean it.
//
-#include <QtGui/qpa/qplatformtheme.h>
#include <QtGui/qfont.h>
-#include <QtLabsControls/private/qquickproxytheme_p.h>
+#include <QtQuickControls/private/qquickproxytheme_p.h>
QT_BEGIN_NAMESPACE
class QQuickMaterialTheme : public QQuickProxyTheme
{
public:
- QQuickMaterialTheme(QPlatformTheme *theme);
+ explicit QQuickMaterialTheme(QPlatformTheme *theme = nullptr);
- ~QQuickMaterialTheme();
-
- const QFont *font(Font type = SystemFont) const Q_DECL_OVERRIDE;
+ const QFont *font(Font type = SystemFont) const override;
private:
QFont systemFont;
QFont buttonFont;
QFont itemViewFont;
QFont menuItemFont;
+ QFont editorFont;
};
QT_END_NAMESPACE
-#endif // QQUICKMATERIALTHEME_H
+#endif // QQUICKMATERIALTHEME_P_H
diff --git a/src/imports/controls/material/qtlabsmaterialstyleplugin.cpp b/src/imports/controls/material/qtquickmaterialstyleplugin.cpp
index 11df4464..c68fd13b 100644
--- a/src/imports/controls/material/qtlabsmaterialstyleplugin.cpp
+++ b/src/imports/controls/material/qtquickmaterialstyleplugin.cpp
@@ -42,30 +42,40 @@
#include "qquickmaterialprogressstrip_p.h"
#include <QtGui/private/qguiapplication_p.h>
-#include <QtLabsControls/private/qquickstyleselector_p.h>
+#include <QtQuickControls/qquickstyle.h>
+#include <QtQuickControls/private/qquickstyleselector_p.h>
static inline void initResources()
{
- Q_INIT_RESOURCE(qtlabsmaterialstyleplugin);
+ Q_INIT_RESOURCE(qtquickmaterialstyleplugin);
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(qmake_Qt_labs_controls_material);
+#endif
}
QT_BEGIN_NAMESPACE
-class QtLabsMaterialStylePlugin : public QQmlExtensionPlugin
+class QtQuickMaterialStylePlugin : public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
public:
- ~QtLabsMaterialStylePlugin();
- void registerTypes(const char *uri) Q_DECL_OVERRIDE;
- void initializeEngine(QQmlEngine *engine, const char *uri) Q_DECL_OVERRIDE;
+ QtQuickMaterialStylePlugin(QObject *parent = nullptr);
+ ~QtQuickMaterialStylePlugin();
+ void registerTypes(const char *uri) override;
+ void initializeEngine(QQmlEngine *engine, const char *uri) override;
private:
QQuickProxyTheme *theme;
};
-QtLabsMaterialStylePlugin::~QtLabsMaterialStylePlugin()
+QtQuickMaterialStylePlugin::QtQuickMaterialStylePlugin(QObject *parent) : QQmlExtensionPlugin(parent)
+{
+ initResources();
+}
+
+QtQuickMaterialStylePlugin::~QtQuickMaterialStylePlugin()
{
if (theme) {
QPlatformTheme *old = theme->theme();
@@ -74,34 +84,27 @@ QtLabsMaterialStylePlugin::~QtLabsMaterialStylePlugin()
}
}
-void QtLabsMaterialStylePlugin::registerTypes(const char *uri)
+void QtQuickMaterialStylePlugin::registerTypes(const char *uri)
{
qmlRegisterUncreatableType<QQuickMaterialStyle>(uri, 1, 0, "Material", tr("Material is an attached property"));
}
-void QtLabsMaterialStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
+void QtQuickMaterialStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
{
Q_UNUSED(engine);
- Q_UNUSED(uri);
-
- QQuickStyleSelector selector;
- if (selector.style() == QLatin1String("material")) {
- QPlatformTheme *old = QGuiApplicationPrivate::platform_theme;
- if (old) {
- QQuickProxyTheme *theme = new QQuickMaterialTheme(old);
- QGuiApplicationPrivate::platform_theme = theme;
- }
- }
- initResources();
+ if (QQuickStyle::name().compare(QLatin1String("material"), Qt::CaseInsensitive) == 0)
+ QGuiApplicationPrivate::platform_theme = new QQuickMaterialTheme;
QByteArray import = QByteArray(uri) + ".impl";
qmlRegisterType<QQuickMaterialProgressRing>(import, 1, 0, "ProgressRing");
qmlRegisterType<QQuickMaterialProgressStrip>(import, 1, 0, "ProgressStrip");
qmlRegisterType<QQuickMaterialRingAnimator>(import, 1, 0, "RingAnimator");
qmlRegisterType<QQuickMaterialStripAnimator>(import, 1, 0, "StripAnimator");
+ qmlRegisterType(QUrl(baseUrl().toString() + QStringLiteral("/Ripple.qml")), import, 1, 0, "Ripple");
+ qmlRegisterType(QUrl(baseUrl().toString() + QStringLiteral("/SliderHandle.qml")), import, 1, 0, "SliderHandle");
}
QT_END_NAMESPACE
-#include "qtlabsmaterialstyleplugin.moc"
+#include "qtquickmaterialstyleplugin.moc"
diff --git a/src/imports/controls/material/qtlabsmaterialstyleplugin.qrc b/src/imports/controls/material/qtquickmaterialstyleplugin.qrc
index 8398d505..8398d505 100644
--- a/src/imports/controls/material/qtlabsmaterialstyleplugin.qrc
+++ b/src/imports/controls/material/qtquickmaterialstyleplugin.qrc
diff --git a/src/imports/controls/plugins.qmltypes b/src/imports/controls/plugins.qmltypes
index e9f0cff2..5bb504e3 100644
--- a/src/imports/controls/plugins.qmltypes
+++ b/src/imports/controls/plugins.qmltypes
@@ -28,7 +28,6 @@ Module {
Property { name: "autoExclusive"; type: "bool" }
Property { name: "autoRepeat"; type: "bool" }
Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
- Property { name: "label"; type: "QQuickItem"; isPointer: true }
Signal { name: "pressed" }
Signal { name: "released" }
Signal { name: "canceled" }
@@ -44,6 +43,7 @@ Module {
exports: ["Qt.labs.templates/ApplicationWindow 1.0"]
exportMetaObjectRevisions: [0]
attachedType: "QQuickApplicationWindowAttached"
+ Property { name: "background"; type: "QQuickItem"; isPointer: true }
Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true }
@@ -186,7 +186,11 @@ Module {
Property { name: "spacing"; type: "double" }
Property { name: "locale"; type: "QLocale" }
Property { name: "mirrored"; type: "bool"; isReadonly: true }
+ Property { name: "focusPolicy"; type: "Qt::FocusPolicy" }
Property { name: "focusReason"; type: "Qt::FocusReason" }
+ Property { name: "hovered"; type: "bool"; isReadonly: true }
+ Property { name: "hoverEnabled"; type: "bool" }
+ Property { name: "wheelEnabled"; type: "bool" }
Property { name: "background"; type: "QQuickItem"; isPointer: true }
Property { name: "contentItem"; type: "QQuickItem"; isPointer: true }
}
@@ -236,7 +240,6 @@ Module {
prototype: "QQuickPane"
exports: ["Qt.labs.templates/Frame 1.0"]
exportMetaObjectRevisions: [0]
- Property { name: "frame"; type: "QQuickItem"; isPointer: true }
}
Component {
name: "QQuickGroupBox"
@@ -439,7 +442,6 @@ Module {
Property { name: "position"; type: "double"; isReadonly: true }
Property { name: "visualPosition"; type: "double"; isReadonly: true }
Property { name: "indeterminate"; type: "bool" }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
}
Component {
name: "QQuickRadioButton"
@@ -469,7 +471,6 @@ Module {
Property { name: "stepSize"; type: "double" }
Property { name: "snapMode"; type: "SnapMode" }
Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "track"; type: "QQuickItem"; isPointer: true }
Method {
name: "setValues"
Parameter { name: "firstValue"; type: "double" }
@@ -496,10 +497,12 @@ Module {
attachedType: "QQuickScrollBarAttached"
Property { name: "size"; type: "double" }
Property { name: "position"; type: "double" }
+ Property { name: "stepSize"; type: "double" }
Property { name: "active"; type: "bool" }
Property { name: "pressed"; type: "bool" }
Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "handle"; type: "QQuickItem"; isPointer: true }
+ Method { name: "increase" }
+ Method { name: "decrease" }
Method {
name: "setSize"
Parameter { name: "size"; type: "double" }
@@ -526,7 +529,6 @@ Module {
Property { name: "position"; type: "double" }
Property { name: "active"; type: "bool" }
Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
Method {
name: "setSize"
Parameter { name: "size"; type: "double" }
@@ -566,7 +568,6 @@ Module {
Property { name: "pressed"; type: "bool" }
Property { name: "orientation"; type: "Qt::Orientation" }
Property { name: "handle"; type: "QQuickItem"; isPointer: true }
- Property { name: "track"; type: "QQuickItem"; isPointer: true }
Method { name: "increase" }
Method { name: "decrease" }
}
@@ -580,6 +581,7 @@ Module {
Property { name: "to"; type: "int" }
Property { name: "value"; type: "int" }
Property { name: "stepSize"; type: "int" }
+ Property { name: "editable"; type: "bool" }
Property { name: "validator"; type: "QValidator"; isPointer: true }
Property { name: "textFromValue"; type: "QJSValue" }
Property { name: "valueFromText"; type: "QJSValue" }
@@ -707,6 +709,14 @@ Module {
prototype: "QQuickContainer"
exports: ["Qt.labs.templates/TabBar 1.0"]
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Position"
+ values: {
+ "Header": 0,
+ "Footer": 1
+ }
+ }
+ Property { name: "position"; type: "Position" }
}
Component {
name: "QQuickTabButton"
@@ -1012,6 +1022,8 @@ Module {
Property { name: "leftPadding"; revision: 6; type: "double" }
Property { name: "rightPadding"; revision: 6; type: "double" }
Property { name: "bottomPadding"; revision: 6; type: "double" }
+ Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true }
+ Signal { name: "preeditTextChanged"; revision: 7 }
Signal { name: "contentSizeChanged" }
Signal {
name: "colorChanged"
@@ -1123,6 +1135,7 @@ Module {
revision: 2
Parameter { name: "text"; type: "string" }
}
+ Method { name: "clear"; revision: 7 }
Method {
name: "inputMethodQuery"
revision: 4
@@ -1275,6 +1288,7 @@ Module {
Property { name: "passwordCharacter"; type: "string" }
Property { name: "passwordMaskDelay"; revision: 3; type: "int" }
Property { name: "displayText"; type: "string"; isReadonly: true }
+ Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true }
Property { name: "autoScroll"; type: "bool" }
Property { name: "selectByMouse"; type: "bool" }
Property { name: "mouseSelectionMode"; type: "SelectionMode" }
@@ -1330,6 +1344,7 @@ Module {
revision: 3
Parameter { name: "delay"; type: "int" }
}
+ Signal { name: "preeditTextChanged"; revision: 7 }
Signal {
name: "activeFocusOnPressChanged"
Parameter { name: "activeFocusOnPress"; type: "bool" }
@@ -1386,6 +1401,7 @@ Module {
revision: 3
Parameter { name: "position"; type: "int" }
}
+ Method { name: "clear"; revision: 7 }
Method {
name: "positionAt"
Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
@@ -1424,6 +1440,14 @@ Module {
prototype: "QQuickFrame"
exports: ["Qt.labs.templates/ToolBar 1.0"]
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Position"
+ values: {
+ "Header": 0,
+ "Footer": 1
+ }
+ }
+ Property { name: "position"; type: "Position" }
}
Component {
name: "QQuickToolButton"
diff --git a/src/imports/controls/qmldir b/src/imports/controls/qmldir
index 98c57fe1..3250e255 100644
--- a/src/imports/controls/qmldir
+++ b/src/imports/controls/qmldir
@@ -1,5 +1,5 @@
module Qt.labs.controls
-plugin qtlabscontrolsplugin
-classname QtLabsControlsPlugin
+plugin qtquickcontrolsplugin
+classname QtQuickControlsPlugin
depends Qt.labs.templates 1.0
designersupported
diff --git a/src/imports/controls/qquickbusyindicatorring.cpp b/src/imports/controls/qquickbusyindicatorring.cpp
index 96213fa4..06e62c16 100644
--- a/src/imports/controls/qquickbusyindicatorring.cpp
+++ b/src/imports/controls/qquickbusyindicatorring.cpp
@@ -50,11 +50,11 @@ public:
QQuickBusyIndicatorAnimatorJob();
~QQuickBusyIndicatorAnimatorJob();
- void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
- void updateCurrentTime(int time) Q_DECL_OVERRIDE;
- void writeBack() Q_DECL_OVERRIDE;
- void nodeWasDestroyed() Q_DECL_OVERRIDE;
- void afterNodeSync() Q_DECL_OVERRIDE;
+ void initialize(QQuickAnimatorController *controller) override;
+ void updateCurrentTime(int time) override;
+ void writeBack() override;
+ void nodeWasDestroyed() override;
+ void afterNodeSync() override;
private:
QSGNode *m_node;
@@ -159,7 +159,7 @@ QQuickAnimatorJob *QQuickBusyIndicatorAnimator::createJob() const
return new QQuickBusyIndicatorAnimatorJob;
}
-QQuickBusyIndicatorAnimatorJob::QQuickBusyIndicatorAnimatorJob() : m_node(Q_NULLPTR)
+QQuickBusyIndicatorAnimatorJob::QQuickBusyIndicatorAnimatorJob() : m_node(nullptr)
{
}
@@ -217,7 +217,7 @@ void QQuickBusyIndicatorAnimatorJob::writeBack()
void QQuickBusyIndicatorAnimatorJob::nodeWasDestroyed()
{
- m_node = Q_NULLPTR;
+ m_node = nullptr;
}
void QQuickBusyIndicatorAnimatorJob::afterNodeSync()
diff --git a/src/imports/controls/qquickbusyindicatorring_p.h b/src/imports/controls/qquickbusyindicatorring_p.h
index 4697628d..cd1e70ad 100644
--- a/src/imports/controls/qquickbusyindicatorring_p.h
+++ b/src/imports/controls/qquickbusyindicatorring_p.h
@@ -58,21 +58,21 @@ class QQuickBusyIndicatorRing : public QQuickItem
Q_OBJECT
public:
- explicit QQuickBusyIndicatorRing(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickBusyIndicatorRing(QQuickItem *parent = nullptr);
~QQuickBusyIndicatorRing();
protected:
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
};
class QQuickBusyIndicatorAnimator : public QQuickAnimator
{
public:
- QQuickBusyIndicatorAnimator(QObject *parent = Q_NULLPTR);
+ QQuickBusyIndicatorAnimator(QObject *parent = nullptr);
protected:
- QString propertyName() const Q_DECL_OVERRIDE;
- QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
+ QString propertyName() const override;
+ QQuickAnimatorJob *createJob() const override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/qquickprogressstrip.cpp b/src/imports/controls/qquickprogressstrip.cpp
index e9480ff1..fc3596db 100644
--- a/src/imports/controls/qquickprogressstrip.cpp
+++ b/src/imports/controls/qquickprogressstrip.cpp
@@ -47,11 +47,11 @@ public:
QQuickProgressAnimatorJob();
~QQuickProgressAnimatorJob();
- void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
- void afterNodeSync() Q_DECL_OVERRIDE;
- void updateCurrentTime(int time) Q_DECL_OVERRIDE;
- void writeBack() Q_DECL_OVERRIDE;
- void nodeWasDestroyed() Q_DECL_OVERRIDE;
+ void initialize(QQuickAnimatorController *controller) override;
+ void afterNodeSync() override;
+ void updateCurrentTime(int time) override;
+ void writeBack() override;
+ void nodeWasDestroyed() override;
private:
QSGNode *m_node;
@@ -63,8 +63,6 @@ QQuickProgressStrip::QQuickProgressStrip(QQuickItem *parent) :
m_indeterminate(false)
{
setFlag(QQuickItem::ItemHasContents);
- setImplicitWidth(116);
- setImplicitHeight(6);
}
QQuickProgressStrip::~QQuickProgressStrip()
@@ -142,6 +140,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda
}
Q_ASSERT(rootTransformNode->type() == QSGNode::TransformNodeType);
+ const qreal y = (height() - implicitHeight()) / 2;
const QColor color(0x35, 0x36, 0x37);
if (m_indeterminate) {
if (rootTransformNode->childCount() != blocks) {
@@ -167,7 +166,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda
m.translate(blockStartX(i), 0);
transformNode->setMatrix(m);
- rectNode->setRect(QRectF(QPointF(), QSizeF(blockWidth, height())));
+ rectNode->setRect(QRectF(QPointF(0, y), QSizeF(blockWidth, implicitHeight())));
rectNode->update();
transformNode = static_cast<QSGTransformNode *>(transformNode->nextSibling());
@@ -185,7 +184,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda
rootTransformNode->appendChildNode(rectNode);
}
- rectNode->setRect(QRectF(QPointF(), QSizeF(m_progress * width(), height())));
+ rectNode->setRect(QRectF(QPointF(0, y), QSizeF(m_progress * width(), implicitHeight())));
rectNode->update();
}
@@ -210,7 +209,7 @@ QQuickAnimatorJob *QQuickProgressAnimator::createJob() const
}
QQuickProgressAnimatorJob::QQuickProgressAnimatorJob() :
- m_node(Q_NULLPTR)
+ m_node(nullptr)
{
}
@@ -308,7 +307,7 @@ void QQuickProgressAnimatorJob::writeBack()
void QQuickProgressAnimatorJob::nodeWasDestroyed()
{
- m_node = Q_NULLPTR;
+ m_node = nullptr;
}
QT_END_NAMESPACE
diff --git a/src/imports/controls/qquickprogressstrip_p.h b/src/imports/controls/qquickprogressstrip_p.h
index c34698dc..105c6a29 100644
--- a/src/imports/controls/qquickprogressstrip_p.h
+++ b/src/imports/controls/qquickprogressstrip_p.h
@@ -60,7 +60,7 @@ class QQuickProgressStrip : public QQuickItem
Q_PROPERTY(qreal progress READ progress WRITE setProgress NOTIFY progressChanged FINAL)
public:
- explicit QQuickProgressStrip(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickProgressStrip(QQuickItem *parent = nullptr);
~QQuickProgressStrip();
bool isIndeterminate() const;
@@ -74,7 +74,7 @@ Q_SIGNALS:
void indeterminateChanged();
protected:
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
private:
qreal m_progress;
@@ -84,11 +84,11 @@ private:
class QQuickProgressAnimator : public QQuickAnimator
{
public:
- QQuickProgressAnimator(QObject *parent = Q_NULLPTR);
+ QQuickProgressAnimator(QObject *parent = nullptr);
protected:
- QString propertyName() const Q_DECL_OVERRIDE;
- QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
+ QString propertyName() const override;
+ QQuickAnimatorJob *createJob() const override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/qtlabscontrolsplugin.cpp b/src/imports/controls/qtlabscontrolsplugin.cpp
deleted file mode 100644
index 4258fb9c..00000000
--- a/src/imports/controls/qtlabscontrolsplugin.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Labs Controls module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtQml/qqmlextensionplugin.h>
-#include <QtCore/qurl.h>
-#include <QtCore/qcoreapplication.h>
-
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
-#include <QtLabsTemplates/private/qquickbuttongroup_p.h>
-#include <QtLabsTemplates/private/qquickcontainer_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
-#include <QtLabsTemplates/private/qquickpopup_p.h>
-#include <QtLabsControls/private/qquickstyleselector_p.h>
-
-#include "qquickbusyindicatorring_p.h"
-#include "qquickprogressstrip_p.h"
-
-static inline void initResources()
-{
- Q_INIT_RESOURCE(qtlabscontrolsplugin);
-}
-
-QT_BEGIN_NAMESPACE
-
-class QtLabsControlsPlugin: public QQmlExtensionPlugin
-{
- Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
-
-public:
- void registerTypes(const char *uri);
- void initializeEngine(QQmlEngine *engine, const char *uri);
-};
-
-void QtLabsControlsPlugin::registerTypes(const char *uri)
-{
- qmlRegisterType<QQuickAbstractButton>(uri, 1, 0, "AbstractButton");
- qmlRegisterType<QQuickButtonGroup>(uri, 1, 0, "ButtonGroup");
- qmlRegisterType<QQuickButtonGroupAttached>();
- qmlRegisterType<QQuickContainer>(uri, 1, 0, "Container");
- qmlRegisterType<QQuickControl>(uri, 1, 0, "Control");
-
- QQuickStyleSelector selector;
- selector.setBaseUrl(baseUrl());
-
- qmlRegisterType(selector.select(QStringLiteral("/ApplicationWindow.qml")), uri, 1, 0, "ApplicationWindow");
- qmlRegisterType(selector.select(QStringLiteral("/BusyIndicator.qml")), uri, 1, 0, "BusyIndicator");
- qmlRegisterType(selector.select(QStringLiteral("/Button.qml")), uri, 1, 0, "Button");
- qmlRegisterType(selector.select(QStringLiteral("/CheckBox.qml")), uri, 1, 0, "CheckBox");
- qmlRegisterType(selector.select(QStringLiteral("/ComboBox.qml")), uri, 1, 0, "ComboBox");
- qmlRegisterType(selector.select(QStringLiteral("/Dial.qml")), uri, 1, 0, "Dial");
- qmlRegisterType(selector.select(QStringLiteral("/Drawer.qml")), uri, 1, 0, "Drawer");
- qmlRegisterType(selector.select(QStringLiteral("/Frame.qml")), uri, 1, 0, "Frame");
- qmlRegisterType(selector.select(QStringLiteral("/GroupBox.qml")), uri, 1, 0, "GroupBox");
- qmlRegisterType(selector.select(QStringLiteral("/ItemDelegate.qml")), uri, 1, 0, "ItemDelegate");
- qmlRegisterType(selector.select(QStringLiteral("/Label.qml")), uri, 1, 0, "Label");
- qmlRegisterType(selector.select(QStringLiteral("/Menu.qml")), uri, 1, 0, "Menu");
- qmlRegisterType(selector.select(QStringLiteral("/MenuItem.qml")), uri, 1, 0, "MenuItem");
- qmlRegisterType(selector.select(QStringLiteral("/Page.qml")), uri, 1, 0, "Page");
- qmlRegisterType(selector.select(QStringLiteral("/PageIndicator.qml")), uri, 1, 0, "PageIndicator");
- qmlRegisterType(selector.select(QStringLiteral("/Pane.qml")), uri, 1, 0, "Pane");
- qmlRegisterType(selector.select(QStringLiteral("/Popup.qml")), uri, 1, 0, "Popup");
- qmlRegisterType(selector.select(QStringLiteral("/ProgressBar.qml")), uri, 1, 0, "ProgressBar");
- qmlRegisterType(selector.select(QStringLiteral("/RadioButton.qml")), uri, 1, 0, "RadioButton");
- qmlRegisterType(selector.select(QStringLiteral("/RangeSlider.qml")), uri, 1, 0, "RangeSlider");
- qmlRegisterType(selector.select(QStringLiteral("/ScrollBar.qml")), uri, 1, 0, "ScrollBar");
- qmlRegisterType(selector.select(QStringLiteral("/ScrollIndicator.qml")), uri, 1, 0, "ScrollIndicator");
- qmlRegisterType(selector.select(QStringLiteral("/Slider.qml")), uri, 1, 0, "Slider");
- qmlRegisterType(selector.select(QStringLiteral("/SpinBox.qml")), uri, 1, 0, "SpinBox");
- qmlRegisterType(selector.select(QStringLiteral("/StackView.qml")), uri, 1, 0, "StackView");
- qmlRegisterType(selector.select(QStringLiteral("/SwipeView.qml")), uri, 1, 0, "SwipeView");
- qmlRegisterType(selector.select(QStringLiteral("/Switch.qml")), uri, 1, 0, "Switch");
- qmlRegisterType(selector.select(QStringLiteral("/TabBar.qml")), uri, 1, 0, "TabBar");
- qmlRegisterType(selector.select(QStringLiteral("/TabButton.qml")), uri, 1, 0, "TabButton");
- qmlRegisterType(selector.select(QStringLiteral("/TextArea.qml")), uri, 1, 0, "TextArea");
- qmlRegisterType(selector.select(QStringLiteral("/TextField.qml")), uri, 1, 0, "TextField");
- qmlRegisterType(selector.select(QStringLiteral("/ToolBar.qml")), uri, 1, 0, "ToolBar");
- qmlRegisterType(selector.select(QStringLiteral("/ToolButton.qml")), uri, 1, 0, "ToolButton");
- qmlRegisterType(selector.select(QStringLiteral("/Tumbler.qml")), uri, 1, 0, "Tumbler");
-}
-
-void QtLabsControlsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
-{
- Q_UNUSED(engine);
- Q_UNUSED(uri);
- initResources();
-
- const QByteArray import = QByteArray(uri) + ".impl";
- qmlRegisterType<QQuickBusyIndicatorRing>(import, 1, 0, "BusyRing");
- qmlRegisterType<QQuickBusyIndicatorAnimator>(import, 1, 0, "BusyRingAnimator");
- qmlRegisterType<QQuickProgressStrip>(import, 1, 0, "ProgressStrip");
- qmlRegisterType<QQuickProgressAnimator>(import, 1, 0, "ProgressStripAnimator");
-}
-
-QT_END_NAMESPACE
-
-#include "qtlabscontrolsplugin.moc"
diff --git a/src/imports/controls/qtquickcontrolsplugin.cpp b/src/imports/controls/qtquickcontrolsplugin.cpp
new file mode 100644
index 00000000..88692be7
--- /dev/null
+++ b/src/imports/controls/qtquickcontrolsplugin.cpp
@@ -0,0 +1,149 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtQml/qqmlextensionplugin.h>
+#include <QtCore/qurl.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/private/qfileselector_p.h>
+
+#include <QtQuickControls/qquickstyle.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickbuttongroup_p.h>
+#include <QtQuickTemplates/private/qquickcontainer_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickpopup_p.h>
+#include <QtQuickControls/private/qquickstyleselector_p.h>
+
+#include "qquickbusyindicatorring_p.h"
+#include "qquickprogressstrip_p.h"
+
+static inline void initResources()
+{
+ Q_INIT_RESOURCE(qtquickcontrolsplugin);
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(qmake_Qt_labs_controls);
+#endif
+}
+
+QT_BEGIN_NAMESPACE
+
+class QtQuickControlsPlugin: public QQmlExtensionPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
+
+public:
+ QtQuickControlsPlugin(QObject *parent = nullptr);
+ void registerTypes(const char *uri);
+ void initializeEngine(QQmlEngine *engine, const char *uri);
+};
+
+QtQuickControlsPlugin::QtQuickControlsPlugin(QObject *parent) : QQmlExtensionPlugin(parent)
+{
+ initResources();
+}
+
+void QtQuickControlsPlugin::registerTypes(const char *uri)
+{
+ qmlRegisterType<QQuickAbstractButton>(uri, 1, 0, "AbstractButton");
+ qmlRegisterType<QQuickButtonGroup>(uri, 1, 0, "ButtonGroup");
+ qmlRegisterType<QQuickButtonGroupAttached>();
+ qmlRegisterType<QQuickContainer>(uri, 1, 0, "Container");
+ qmlRegisterType<QQuickControl>(uri, 1, 0, "Control");
+
+ QQuickStyleSelector selector;
+ if (QFile::exists(QLatin1String(":/qt-project.org/imports/Qt/labs/controls/ApplicationWindow.qml")))
+ selector.setBaseUrl(QUrl(QLatin1String("qrc:/qt-project.org/imports/Qt/labs/controls")));
+ else
+ selector.setBaseUrl(baseUrl());
+
+ const QString style = QQuickStyle::name();
+ if (!style.isEmpty())
+ QFileSelectorPrivate::addStatics(QStringList() << style);
+
+ qmlRegisterType(selector.select(QStringLiteral("ApplicationWindow.qml")), uri, 1, 0, "ApplicationWindow");
+ qmlRegisterType(selector.select(QStringLiteral("BusyIndicator.qml")), uri, 1, 0, "BusyIndicator");
+ qmlRegisterType(selector.select(QStringLiteral("Button.qml")), uri, 1, 0, "Button");
+ qmlRegisterType(selector.select(QStringLiteral("CheckBox.qml")), uri, 1, 0, "CheckBox");
+ qmlRegisterType(selector.select(QStringLiteral("ComboBox.qml")), uri, 1, 0, "ComboBox");
+ qmlRegisterType(selector.select(QStringLiteral("Dial.qml")), uri, 1, 0, "Dial");
+ qmlRegisterType(selector.select(QStringLiteral("Drawer.qml")), uri, 1, 0, "Drawer");
+ qmlRegisterType(selector.select(QStringLiteral("Frame.qml")), uri, 1, 0, "Frame");
+ qmlRegisterType(selector.select(QStringLiteral("GroupBox.qml")), uri, 1, 0, "GroupBox");
+ qmlRegisterType(selector.select(QStringLiteral("ItemDelegate.qml")), uri, 1, 0, "ItemDelegate");
+ qmlRegisterType(selector.select(QStringLiteral("Label.qml")), uri, 1, 0, "Label");
+ qmlRegisterType(selector.select(QStringLiteral("Menu.qml")), uri, 1, 0, "Menu");
+ qmlRegisterType(selector.select(QStringLiteral("MenuItem.qml")), uri, 1, 0, "MenuItem");
+ qmlRegisterType(selector.select(QStringLiteral("Page.qml")), uri, 1, 0, "Page");
+ qmlRegisterType(selector.select(QStringLiteral("PageIndicator.qml")), uri, 1, 0, "PageIndicator");
+ qmlRegisterType(selector.select(QStringLiteral("Pane.qml")), uri, 1, 0, "Pane");
+ qmlRegisterType(selector.select(QStringLiteral("Popup.qml")), uri, 1, 0, "Popup");
+ qmlRegisterType(selector.select(QStringLiteral("ProgressBar.qml")), uri, 1, 0, "ProgressBar");
+ qmlRegisterType(selector.select(QStringLiteral("RadioButton.qml")), uri, 1, 0, "RadioButton");
+ qmlRegisterType(selector.select(QStringLiteral("RangeSlider.qml")), uri, 1, 0, "RangeSlider");
+ qmlRegisterType(selector.select(QStringLiteral("ScrollBar.qml")), uri, 1, 0, "ScrollBar");
+ qmlRegisterType(selector.select(QStringLiteral("ScrollIndicator.qml")), uri, 1, 0, "ScrollIndicator");
+ qmlRegisterType(selector.select(QStringLiteral("Slider.qml")), uri, 1, 0, "Slider");
+ qmlRegisterType(selector.select(QStringLiteral("SpinBox.qml")), uri, 1, 0, "SpinBox");
+ qmlRegisterType(selector.select(QStringLiteral("StackView.qml")), uri, 1, 0, "StackView");
+ qmlRegisterType(selector.select(QStringLiteral("SwipeDelegate.qml")), uri, 1, 0, "SwipeDelegate");
+ qmlRegisterType(selector.select(QStringLiteral("SwipeView.qml")), uri, 1, 0, "SwipeView");
+ qmlRegisterType(selector.select(QStringLiteral("Switch.qml")), uri, 1, 0, "Switch");
+ qmlRegisterType(selector.select(QStringLiteral("TabBar.qml")), uri, 1, 0, "TabBar");
+ qmlRegisterType(selector.select(QStringLiteral("TabButton.qml")), uri, 1, 0, "TabButton");
+ qmlRegisterType(selector.select(QStringLiteral("TextArea.qml")), uri, 1, 0, "TextArea");
+ qmlRegisterType(selector.select(QStringLiteral("TextField.qml")), uri, 1, 0, "TextField");
+ qmlRegisterType(selector.select(QStringLiteral("ToolBar.qml")), uri, 1, 0, "ToolBar");
+ qmlRegisterType(selector.select(QStringLiteral("ToolButton.qml")), uri, 1, 0, "ToolButton");
+ qmlRegisterType(selector.select(QStringLiteral("Tumbler.qml")), uri, 1, 0, "Tumbler");
+}
+
+void QtQuickControlsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
+{
+ Q_UNUSED(engine);
+ Q_UNUSED(uri);
+
+ const QByteArray import = QByteArray(uri) + ".impl";
+ qmlRegisterType<QQuickBusyIndicatorRing>(import, 1, 0, "BusyRing");
+ qmlRegisterType<QQuickBusyIndicatorAnimator>(import, 1, 0, "BusyRingAnimator");
+ qmlRegisterType<QQuickProgressStrip>(import, 1, 0, "ProgressStrip");
+ qmlRegisterType<QQuickProgressAnimator>(import, 1, 0, "ProgressStripAnimator");
+}
+
+QT_END_NAMESPACE
+
+#include "qtquickcontrolsplugin.moc"
diff --git a/src/imports/controls/qtlabscontrolsplugin.qrc b/src/imports/controls/qtquickcontrolsplugin.qrc
index 1147ae3d..1147ae3d 100644
--- a/src/imports/controls/qtlabscontrolsplugin.qrc
+++ b/src/imports/controls/qtquickcontrolsplugin.qrc
diff --git a/src/imports/controls/universal/Button.qml b/src/imports/controls/universal/Button.qml
index 1dc94c89..5198b756 100644
--- a/src/imports/controls/universal/Button.qml
+++ b/src/imports/controls/universal/Button.qml
@@ -42,10 +42,10 @@ T.Button {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
topPadding: 4
leftPadding: 8
@@ -54,13 +54,8 @@ T.Button {
property bool useSystemFocusVisuals: true
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
elide: Text.ElideRight
@@ -69,7 +64,7 @@ T.Button {
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml
index 37c20d00..2dff0488 100644
--- a/src/imports/controls/universal/CheckBox.qml
+++ b/src/imports/controls/universal/CheckBox.qml
@@ -42,13 +42,11 @@ T.CheckBox {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
spacing: 8
@@ -92,12 +90,10 @@ T.CheckBox {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -108,5 +104,5 @@ T.CheckBox {
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml
index 31a928a3..9c38ab8d 100644
--- a/src/imports/controls/universal/ComboBox.qml
+++ b/src/imports/controls/universal/ComboBox.qml
@@ -36,6 +36,7 @@
import QtQuick 2.6
import QtQuick.Window 2.2
+import Qt.labs.controls 1.0
import Qt.labs.templates 1.0 as T
import Qt.labs.controls.universal 1.0
diff --git a/src/imports/controls/universal/Frame.qml b/src/imports/controls/universal/Frame.qml
index 9427dc2f..70f1647d 100644
--- a/src/imports/controls/universal/Frame.qml
+++ b/src/imports/controls/universal/Frame.qml
@@ -53,13 +53,10 @@ T.Frame {
contentItem: Item { }
//! [contentItem]
- //! [frame]
- frame: Rectangle {
- width: parent.width
- height: parent.height
-
+ //! [background]
+ background: Rectangle {
color: "transparent"
border.color: control.Universal.chromeDisabledLowColor
}
- //! [frame]
+ //! [background]
}
diff --git a/src/imports/controls/universal/GroupBox.qml b/src/imports/controls/universal/GroupBox.qml
index b4e28eb1..9d80f1ac 100644
--- a/src/imports/controls/universal/GroupBox.qml
+++ b/src/imports/controls/universal/GroupBox.qml
@@ -51,7 +51,7 @@ T.GroupBox {
spacing: 12
padding: 12
- topPadding: 12 + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
+ topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
//! [contentItem]
contentItem: Item { }
@@ -71,8 +71,8 @@ T.GroupBox {
}
//! [label]
- //! [frame]
- frame: Rectangle {
+ //! [background]
+ background: Rectangle {
y: control.topPadding - control.padding
width: parent.width
height: parent.height - control.topPadding + control.padding
@@ -80,5 +80,5 @@ T.GroupBox {
color: "transparent"
border.color: control.Universal.chromeDisabledLowColor
}
- //! [frame]
+ //! [background]
}
diff --git a/src/imports/controls/universal/ItemDelegate.qml b/src/imports/controls/universal/ItemDelegate.qml
index 2aaf270b..3296a7cd 100644
--- a/src/imports/controls/universal/ItemDelegate.qml
+++ b/src/imports/controls/universal/ItemDelegate.qml
@@ -42,13 +42,11 @@ T.ItemDelegate {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
spacing: 12
@@ -67,12 +65,10 @@ T.ItemDelegate {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored || !control.checkable ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - (control.checkable ? indicator.width + control.spacing : 0)
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -83,7 +79,7 @@ T.ItemDelegate {
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/universal/MenuItem.qml b/src/imports/controls/universal/MenuItem.qml
index fee5d886..cc8cb75d 100644
--- a/src/imports/controls/universal/MenuItem.qml
+++ b/src/imports/controls/universal/MenuItem.qml
@@ -41,12 +41,12 @@ import Qt.labs.controls.universal 1.0
T.MenuItem {
id: control
- implicitWidth: background ? background.implicitWidth
- : (label ? label.implicitWidth : 0) + (indicator ? indicator.implicitWidth : 0)
- + (label && indicator ? spacing : 0) + leftPadding + rightPadding
- implicitHeight: background ? background.implicitHeight
- : (label ? label.implicitHeight : 0) + (indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ implicitWidth: Math.max(background ? background.implicitWidth : 0,
+ contentItem.implicitWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(background ? background.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
+ indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
topPadding: 11
leftPadding: 12
@@ -54,12 +54,10 @@ T.MenuItem {
bottomPadding: 13
spacing: 12
- //! [label]
- label: Text {
- x: control.mirrored || !control.checkable ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - (control.checkable ? indicator.width + control.spacing : 0)
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -69,7 +67,7 @@ T.MenuItem {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [indicator]
indicator: Image {
diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml
index 3d88fc67..360b7896 100644
--- a/src/imports/controls/universal/ProgressBar.qml
+++ b/src/imports/controls/universal/ProgressBar.qml
@@ -43,37 +43,27 @@ T.ProgressBar {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
+ contentItem.implicitHeight + topPadding + bottomPadding)
- //! [indicator]
- indicator: Rectangle {
- x: control.leftPadding
- y: control.topPadding + (control.availableHeight - height) / 2
- width: control.indeterminate ? 0 : control.position * control.availableWidth
- height: 10
+ //! [contentItem]
+ contentItem: ProgressStrip {
+ id: strip
+ implicitHeight: 10
scale: control.mirrored ? -1 : 1
+ indeterminate: control.indeterminate
color: control.Universal.accent
+ progress: control.position
+ clip: control.indeterminate
- ProgressStrip {
- id: strip
-
- width: control.availableWidth
- height: control.availableHeight
-
- clip: control.indeterminate
- visible: control.indeterminate
- color: control.Universal.accent
-
- ProgressStripAnimator {
- target: strip
- running: strip.visible
- }
+ ProgressStripAnimator {
+ target: strip
+ running: control.visible && control.indeterminate
}
}
- //! [indicator]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml
index 95e55db9..a391d670 100644
--- a/src/imports/controls/universal/RadioButton.qml
+++ b/src/imports/controls/universal/RadioButton.qml
@@ -42,13 +42,11 @@ T.RadioButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
spacing: 8
@@ -98,12 +96,10 @@ T.RadioButton {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -114,5 +110,5 @@ T.RadioButton {
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/universal/RangeSlider.qml b/src/imports/controls/universal/RangeSlider.qml
index f01c06ed..c9dfc8d0 100644
--- a/src/imports/controls/universal/RangeSlider.qml
+++ b/src/imports/controls/universal/RangeSlider.qml
@@ -42,11 +42,11 @@ T.RangeSlider {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- Math.max(track ? track.implicitWidth : 0,
+ Math.max(background ? background.implicitWidth : 0,
first.handle ? first.handle.implicitWidth : 0,
second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(track ? track.implicitHeight : 0,
+ Math.max(background ? background.implicitHeight : 0,
first.handle ? first.handle.implicitHeight : 0,
second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding)
@@ -82,8 +82,8 @@ T.RangeSlider {
}
//! [secondHandle]
- //! [track]
- track: Item {
+ //! [background]
+ background: Item {
implicitWidth: horizontal ? 200 : 18
implicitHeight: horizontal ? 18 : 200
@@ -99,8 +99,8 @@ T.RangeSlider {
Rectangle {
x: parent.horizontal ? 0 : (parent.width - width) / 2
y: parent.horizontal ? (parent.height - height) / 2 : 0
- width: parent.horizontal ? parent.width : 2 // SliderTrackThemeHeight
- height: !parent.horizontal ? parent.height : 2 // SliderTrackThemeHeight
+ width: parent.horizontal ? parent.width : 2 // SliderBackgroundThemeHeight
+ height: !parent.horizontal ? parent.height : 2 // SliderBackgroundThemeHeight
color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor
}
@@ -108,11 +108,11 @@ T.RangeSlider {
Rectangle {
x: parent.horizontal ? control.first.position * parent.width : 0
y: parent.horizontal ? (parent.height - height) / 2 : control.second.visualPosition * parent.height
- width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderTrackThemeHeight
- height: !parent.horizontal ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderTrackThemeHeight
+ width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderBackgroundThemeHeight
+ height: !parent.horizontal ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderBackgroundThemeHeight
color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
}
- //! [track]
+ //! [background]
}
diff --git a/src/imports/controls/universal/ScrollBar.qml b/src/imports/controls/universal/ScrollBar.qml
index b1bc8f6a..393a640e 100644
--- a/src/imports/controls/universal/ScrollBar.qml
+++ b/src/imports/controls/universal/ScrollBar.qml
@@ -42,28 +42,22 @@ T.ScrollBar {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- handle.implicitWidth + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- handle.implicitHeight + topPadding + bottomPadding)
+ contentItem.implicitHeight + topPadding + bottomPadding)
// TODO: arrows
- //! [handle]
- handle: Rectangle {
+ //! [contentItem]
+ contentItem: Rectangle {
implicitWidth: 12
implicitHeight: 12
color: control.pressed ? control.Universal.baseMediumColor : control.Universal.chromeHighColor
visible: control.size < 1.0
opacity: 0.0
-
- readonly property bool horizontal: control.orientation === Qt.Horizontal
- x: control.leftPadding + (horizontal ? control.position * control.width : 0)
- y: control.topPadding + (horizontal ? 0 : control.position * control.height)
- width: horizontal ? control.size * control.availableWidth : implicitWidth
- height: horizontal ? implicitHeight : control.size * control.availableHeight
}
- //! [handle]
+ //! [contentItem]
//! [background]
background: Rectangle {
@@ -86,13 +80,13 @@ T.ScrollBar {
transitions: [
Transition {
to: "active"
- NumberAnimation { targets: [handle, background]; property: "opacity"; to: 1.0 }
+ NumberAnimation { targets: [contentItem, background]; property: "opacity"; to: 1.0 }
},
Transition {
from: "active"
SequentialAnimation {
PauseAnimation { duration: 3000 }
- NumberAnimation { targets: [handle, background]; property: "opacity"; to: 0.0 }
+ NumberAnimation { targets: [contentItem, background]; property: "opacity"; to: 0.0 }
}
}
]
diff --git a/src/imports/controls/universal/ScrollIndicator.qml b/src/imports/controls/universal/ScrollIndicator.qml
index 5787b60a..0e82b631 100644
--- a/src/imports/controls/universal/ScrollIndicator.qml
+++ b/src/imports/controls/universal/ScrollIndicator.qml
@@ -42,12 +42,14 @@ T.ScrollIndicator {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- indicator.implicitWidth + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- indicator.implicitHeight + topPadding + bottomPadding)
+ contentItem.implicitHeight + topPadding + bottomPadding)
+
+ //! [contentItem]
+ contentItem: Rectangle {
+ id: indicator
- //! [indicator]
- indicator: Rectangle {
implicitWidth: 6
implicitHeight: 6
@@ -55,12 +57,6 @@ T.ScrollIndicator {
visible: control.size < 1.0
opacity: 0.0
- readonly property bool horizontal: control.orientation === Qt.Horizontal
- x: control.leftPadding + (horizontal ? control.position * control.width : 0)
- y: control.topPadding + (horizontal ? 0 : control.position * control.height)
- width: horizontal ? control.size * control.availableWidth : implicitWidth
- height: horizontal ? implicitHeight : control.size * control.availableHeight
-
states: [
State {
name: "active"
@@ -82,5 +78,5 @@ T.ScrollIndicator {
}
]
}
- //! [indicator]
+ //! [contentItem]
}
diff --git a/src/imports/controls/universal/Slider.qml b/src/imports/controls/universal/Slider.qml
index 66357c6e..c2cc194a 100644
--- a/src/imports/controls/universal/Slider.qml
+++ b/src/imports/controls/universal/Slider.qml
@@ -42,10 +42,10 @@ T.Slider {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- Math.max(track ? track.implicitWidth : 0,
+ Math.max(background ? background.implicitWidth : 0,
handle ? handle.implicitWidth : 0) + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(track ? track.implicitHeight : 0,
+ Math.max(background ? background.implicitHeight : 0,
handle ? handle.implicitHeight : 0) + topPadding + bottomPadding)
padding: 6
@@ -67,8 +67,8 @@ T.Slider {
}
//! [handle]
- //! [track]
- track: Item {
+ //! [background]
+ background: Item {
implicitWidth: horizontal ? 200 : 18
implicitHeight: horizontal ? 18 : 200
@@ -99,5 +99,5 @@ T.Slider {
color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
}
- //! [track]
+ //! [background]
}
diff --git a/src/imports/controls/universal/SpinBox.qml b/src/imports/controls/universal/SpinBox.qml
index c903baf4..cfb18391 100644
--- a/src/imports/controls/universal/SpinBox.qml
+++ b/src/imports/controls/universal/SpinBox.qml
@@ -79,6 +79,7 @@ T.SpinBox {
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: TextInput.AlignVCenter
+ readOnly: !control.editable
validator: control.validator
inputMethodHints: Qt.ImhFormattedNumbersOnly
}
diff --git a/src/imports/controls/universal/StackView.qml b/src/imports/controls/universal/StackView.qml
index b49c2dbb..cbc5665d 100644
--- a/src/imports/controls/universal/StackView.qml
+++ b/src/imports/controls/universal/StackView.qml
@@ -39,13 +39,13 @@ import Qt.labs.templates 1.0 as T
import Qt.labs.controls.universal 1.0
T.StackView {
- id: root
+ id: control
//! [popEnter]
popEnter: Transition {
ParallelAnimation {
NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint }
- NumberAnimation { property: "x"; from: (root.mirrored ? -0.3 : 0.3) * -root.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
}
}
//! [popEnter]
@@ -60,7 +60,7 @@ T.StackView {
pushEnter: Transition {
ParallelAnimation {
NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint }
- NumberAnimation { property: "x"; from: (root.mirrored ? -0.3 : 0.3) * root.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
}
}
//! [pushEnter]
@@ -75,7 +75,7 @@ T.StackView {
replaceEnter: Transition {
ParallelAnimation {
NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint }
- NumberAnimation { property: "x"; from: (root.mirrored ? -0.3 : 0.3) * root.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
+ NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic }
}
}
//! [replaceEnter]
diff --git a/src/imports/controls/universal/SwipeDelegate.qml b/src/imports/controls/universal/SwipeDelegate.qml
new file mode 100644
index 00000000..92c3a6dc
--- /dev/null
+++ b/src/imports/controls/universal/SwipeDelegate.qml
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import Qt.labs.templates 1.0 as T
+import Qt.labs.controls.universal 1.0
+
+T.SwipeDelegate {
+ id: control
+
+ implicitWidth: Math.max(background ? background.implicitWidth : 0,
+ contentItem.implicitWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(background ? background.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
+ indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
+
+ spacing: 12
+
+ topPadding: 11
+ leftPadding: 12
+ rightPadding: 12
+ bottomPadding: 13
+
+ //! [indicator]
+ indicator: Image {
+ x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2
+ y: control.topPadding + (control.availableHeight - height) / 2
+
+ visible: control.checked
+ source: !control.checkable ? "" : "image://universal/checkmark/" + (!control.enabled ? control.Universal.baseLowColor : control.pressed ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor)
+ }
+ //! [indicator]
+
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0
+
+ text: control.text
+ font: control.font
+ elide: Text.ElideRight
+ visible: control.text
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ renderType: Text.NativeRendering
+
+ color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
+
+ Behavior on x {
+ enabled: !control.pressed
+ NumberAnimation {
+ easing.type: Easing.InOutCubic
+ duration: 400
+ }
+ }
+ }
+ //! [contentItem]
+
+ //! [background]
+ background: Rectangle {
+ color: !control.enabled ? control.Universal.chromeDisabledHighColor :
+ (control.pressed ? control.Universal.chromeHighColor :
+ (control.activeFocus || control.hovered ? control.Universal.chromeLowColor : control.Universal.chromeMediumColor))
+
+ Rectangle {
+ width: parent.width
+ height: parent.height
+ visible: control.activeFocus || control.highlighted
+ color: control.Universal.accent
+ opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6
+ }
+
+ Behavior on x {
+ enabled: !control.pressed
+ NumberAnimation {
+ easing.type: Easing.InOutCubic
+ duration: 400
+ }
+ }
+ }
+ //! [background]
+}
diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml
index 768291fc..dbbb3112 100644
--- a/src/imports/controls/universal/Switch.qml
+++ b/src/imports/controls/universal/Switch.qml
@@ -42,13 +42,11 @@ T.Switch {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- (label ? label.implicitWidth : 0) +
- (indicator ? indicator.implicitWidth : 0) +
- (label && indicator ? spacing : 0) + leftPadding + rightPadding)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- Math.max(label ? label.implicitHeight : 0,
+ Math.max(contentItem.implicitHeight,
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 5
spacing: 8
@@ -90,12 +88,10 @@ T.Switch {
}
//! [indicator]
- //! [label]
- label: Text {
- x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
- y: control.topPadding
- width: control.availableWidth - indicator.width - control.spacing
- height: control.availableHeight
+ //! [contentItem]
+ contentItem: Text {
+ leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
+ rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
text: control.text
font: control.font
@@ -106,5 +102,5 @@ T.Switch {
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/universal/TabButton.qml b/src/imports/controls/universal/TabButton.qml
index c736a87b..e49bfadd 100644
--- a/src/imports/controls/universal/TabButton.qml
+++ b/src/imports/controls/universal/TabButton.qml
@@ -42,20 +42,15 @@ T.TabButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 12 // PivotItemMargin
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
elide: Text.ElideRight
@@ -63,5 +58,5 @@ T.TabButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
}
diff --git a/src/imports/controls/universal/TextArea.qml b/src/imports/controls/universal/TextArea.qml
index 255f5774..80d62cf4 100644
--- a/src/imports/controls/universal/TextArea.qml
+++ b/src/imports/controls/universal/TextArea.qml
@@ -72,7 +72,7 @@ T.TextArea {
font: control.font
color: !control.enabled ? control.Universal.chromeDisabledLowColor :
control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor
- visible: !control.length && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
+ visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
horizontalAlignment: control.horizontalAlignment
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
diff --git a/src/imports/controls/universal/TextField.qml b/src/imports/controls/universal/TextField.qml
index fe9e071d..288dad02 100644
--- a/src/imports/controls/universal/TextField.qml
+++ b/src/imports/controls/universal/TextField.qml
@@ -73,7 +73,7 @@ T.TextField {
font: control.font
color: !control.enabled ? control.Universal.chromeDisabledLowColor :
control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor
- visible: !control.displayText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
+ visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
horizontalAlignment: control.horizontalAlignment
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
diff --git a/src/imports/controls/universal/ToolButton.qml b/src/imports/controls/universal/ToolButton.qml
index a8fa8bd5..57d5d045 100644
--- a/src/imports/controls/universal/ToolButton.qml
+++ b/src/imports/controls/universal/ToolButton.qml
@@ -42,22 +42,17 @@ T.ToolButton {
id: control
implicitWidth: Math.max(background ? background.implicitWidth : 0,
- label ? label.implicitWidth + leftPadding + rightPadding : 0)
+ contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
- label ? label.implicitHeight + topPadding + bottomPadding : 0)
- baselineOffset: label ? label.y + label.baselineOffset : 0
+ contentItem.implicitHeight + topPadding + bottomPadding)
+ baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
property bool useSystemFocusVisuals: true
- //! [label]
- label: Text {
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
+ //! [contentItem]
+ contentItem: Text {
text: control.text
font: control.font
color: control.enabled ? control.Universal.baseHighColor : control.Universal.baseLowColor
@@ -65,7 +60,7 @@ T.ToolButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
- //! [label]
+ //! [contentItem]
//! [background]
background: Rectangle {
diff --git a/src/imports/controls/universal/qmldir b/src/imports/controls/universal/qmldir
index ebf841fb..7b7d28a4 100644
--- a/src/imports/controls/universal/qmldir
+++ b/src/imports/controls/universal/qmldir
@@ -1,4 +1,4 @@
module Qt.labs.controls.universal
-plugin qtlabsuniversalstyleplugin
-classname QtLabsUniversalStylePlugin
+plugin qtquickuniversalstyleplugin
+classname QtQuickUniversalStylePlugin
depends Qt.labs.controls 1.0
diff --git a/src/imports/controls/universal/qquickuniversalfocusrectangle_p.h b/src/imports/controls/universal/qquickuniversalfocusrectangle_p.h
index 6b15bc8d..628db5b2 100644
--- a/src/imports/controls/universal/qquickuniversalfocusrectangle_p.h
+++ b/src/imports/controls/universal/qquickuniversalfocusrectangle_p.h
@@ -57,9 +57,9 @@ class QQuickUniversalFocusRectangle : public QQuickPaintedItem
Q_OBJECT
public:
- QQuickUniversalFocusRectangle(QQuickItem *parent = Q_NULLPTR);
+ QQuickUniversalFocusRectangle(QQuickItem *parent = nullptr);
- void paint(QPainter *painter) Q_DECL_OVERRIDE;
+ void paint(QPainter *painter) override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/universal/qquickuniversalprogressring.cpp b/src/imports/controls/universal/qquickuniversalprogressring.cpp
index 2fe66047..38931525 100644
--- a/src/imports/controls/universal/qquickuniversalprogressring.cpp
+++ b/src/imports/controls/universal/qquickuniversalprogressring.cpp
@@ -53,11 +53,11 @@ class QQuickUniversalProgressRingAnimatorJob : public QQuickAnimatorJob
public:
QQuickUniversalProgressRingAnimatorJob();
- void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
- void updateCurrentTime(int time) Q_DECL_OVERRIDE;
- void writeBack() Q_DECL_OVERRIDE;
- void nodeWasDestroyed() Q_DECL_OVERRIDE;
- void afterNodeSync() Q_DECL_OVERRIDE;
+ void initialize(QQuickAnimatorController *controller) override;
+ void updateCurrentTime(int time) override;
+ void writeBack() override;
+ void nodeWasDestroyed() override;
+ void afterNodeSync() override;
private:
struct Phase {
@@ -73,7 +73,7 @@ private:
Phase m_phases[PhaseCount];
};
-QQuickUniversalProgressRingAnimatorJob::QQuickUniversalProgressRingAnimatorJob() : m_node(Q_NULLPTR)
+QQuickUniversalProgressRingAnimatorJob::QQuickUniversalProgressRingAnimatorJob() : m_node(nullptr)
{
m_phases[0] = Phase(433, -110, 10, QEasingCurve::BezierSpline);
m_phases[1] = Phase(767, 10, 93, QEasingCurve::Linear );
@@ -121,7 +121,7 @@ void QQuickUniversalProgressRingAnimatorJob::updateCurrentTime(int time)
if (visible) {
int phaseIndex, remain = time, elapsed = 0;
- for (phaseIndex = 0; phaseIndex < PhaseCount; ++phaseIndex) {
+ for (phaseIndex = 0; phaseIndex < PhaseCount - 1; ++phaseIndex) {
if (remain <= m_phases[phaseIndex].duration + begin)
break;
remain -= m_phases[phaseIndex].duration;
@@ -153,7 +153,7 @@ void QQuickUniversalProgressRingAnimatorJob::writeBack()
void QQuickUniversalProgressRingAnimatorJob::nodeWasDestroyed()
{
- m_node = Q_NULLPTR;
+ m_node = nullptr;
}
void QQuickUniversalProgressRingAnimatorJob::afterNodeSync()
@@ -191,11 +191,12 @@ int QQuickUniversalProgressRing::count() const
void QQuickUniversalProgressRing::setCount(int count)
{
- if (m_count != count) {
- m_count = count;
- update();
- emit countChanged();
- }
+ if (m_count == count)
+ return;
+
+ m_count = count;
+ update();
+ emit countChanged();
}
QColor QQuickUniversalProgressRing::color() const
@@ -205,11 +206,12 @@ QColor QQuickUniversalProgressRing::color() const
void QQuickUniversalProgressRing::setColor(const QColor &color)
{
- if (m_color != color) {
- m_color = color;
- update();
- emit colorChanged();
- }
+ if (m_color == color)
+ return;
+
+ m_color = color;
+ update();
+ emit colorChanged();
}
QSGNode *QQuickUniversalProgressRing::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
diff --git a/src/imports/controls/universal/qquickuniversalprogressring_p.h b/src/imports/controls/universal/qquickuniversalprogressring_p.h
index 1d484e3a..f32beb54 100644
--- a/src/imports/controls/universal/qquickuniversalprogressring_p.h
+++ b/src/imports/controls/universal/qquickuniversalprogressring_p.h
@@ -60,7 +60,7 @@ class QQuickUniversalProgressRing : public QQuickItem
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
public:
- QQuickUniversalProgressRing(QQuickItem *parent = Q_NULLPTR);
+ QQuickUniversalProgressRing(QQuickItem *parent = nullptr);
int count() const;
void setCount(int count);
@@ -73,7 +73,7 @@ Q_SIGNALS:
void colorChanged();
protected:
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
private:
int m_count;
@@ -85,11 +85,11 @@ class QQuickUniversalProgressRingAnimator : public QQuickAnimator
Q_OBJECT
public:
- QQuickUniversalProgressRingAnimator(QObject *parent = Q_NULLPTR);
+ QQuickUniversalProgressRingAnimator(QObject *parent = nullptr);
protected:
- QString propertyName() const Q_DECL_OVERRIDE;
- QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
+ QString propertyName() const override;
+ QQuickAnimatorJob *createJob() const override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/universal/qquickuniversalprogressstrip.cpp b/src/imports/controls/universal/qquickuniversalprogressstrip.cpp
index 39ce1b5c..f23e91da 100644
--- a/src/imports/controls/universal/qquickuniversalprogressstrip.cpp
+++ b/src/imports/controls/universal/qquickuniversalprogressstrip.cpp
@@ -62,11 +62,11 @@ class QQuickUniversalProgressStripAnimatorJob : public QQuickAnimatorJob
public:
QQuickUniversalProgressStripAnimatorJob();
- void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
- void updateCurrentTime(int time) Q_DECL_OVERRIDE;
- void writeBack() Q_DECL_OVERRIDE;
- void nodeWasDestroyed() Q_DECL_OVERRIDE;
- void afterNodeSync() Q_DECL_OVERRIDE;
+ void initialize(QQuickAnimatorController *controller) override;
+ void updateCurrentTime(int time) override;
+ void writeBack() override;
+ void nodeWasDestroyed() override;
+ void afterNodeSync() override;
private:
struct Phase {
@@ -82,7 +82,7 @@ private:
Phase m_ellipsePhases[PhaseCount];
};
-QQuickUniversalProgressStripAnimatorJob::QQuickUniversalProgressStripAnimatorJob() : m_node(Q_NULLPTR)
+QQuickUniversalProgressStripAnimatorJob::QQuickUniversalProgressStripAnimatorJob() : m_node(nullptr)
{
m_borderPhases[0] = Phase( 500, -50, 0);
m_borderPhases[1] = Phase(1500, 0, 0);
@@ -148,7 +148,7 @@ void QQuickUniversalProgressStripAnimatorJob::updateCurrentTime(int time)
if (visible) {
{
int phaseIndex, remain = time, elapsed = 0;
- for (phaseIndex = 0; phaseIndex < PhaseCount; ++phaseIndex) {
+ for (phaseIndex = 0; phaseIndex < PhaseCount - 1; ++phaseIndex) {
if (remain <= m_borderPhases[phaseIndex].duration + begin)
break;
remain -= m_borderPhases[phaseIndex].duration;
@@ -171,7 +171,7 @@ void QQuickUniversalProgressStripAnimatorJob::updateCurrentTime(int time)
curve.addCubicBezierSegment(QPointF(0.4, 0.0), QPointF(0.6, 1.0), QPointF(1.0, 1.0));
int phaseIndex, remain = time, elapsed = 0;
- for (phaseIndex = 0; phaseIndex < PhaseCount; ++phaseIndex) {
+ for (phaseIndex = 0; phaseIndex < PhaseCount - 1; ++phaseIndex) {
if (remain <= m_ellipsePhases[phaseIndex].duration + begin)
break;
remain -= m_ellipsePhases[phaseIndex].duration;
@@ -203,7 +203,7 @@ void QQuickUniversalProgressStripAnimatorJob::writeBack()
void QQuickUniversalProgressStripAnimatorJob::nodeWasDestroyed()
{
- m_node = Q_NULLPTR;
+ m_node = nullptr;
}
void QQuickUniversalProgressStripAnimatorJob::afterNodeSync()
@@ -229,7 +229,7 @@ QQuickAnimatorJob *QQuickUniversalProgressStripAnimator::createJob() const
}
QQuickUniversalProgressStrip::QQuickUniversalProgressStrip(QQuickItem *parent)
- : QQuickItem(parent), m_color(Qt::black)
+ : QQuickItem(parent), m_color(Qt::black), m_progress(0.0), m_indeterminate(false)
{
setFlag(ItemHasContents);
}
@@ -241,25 +241,67 @@ QColor QQuickUniversalProgressStrip::color() const
void QQuickUniversalProgressStrip::setColor(const QColor &color)
{
- if (m_color != color) {
- m_color = color;
- update();
- emit colorChanged();
- }
+ if (m_color == color)
+ return;
+
+ m_color = color;
+ update();
+}
+
+qreal QQuickUniversalProgressStrip::progress() const
+{
+ return m_progress;
+}
+
+void QQuickUniversalProgressStrip::setProgress(qreal progress)
+{
+ if (progress == m_progress)
+ return;
+
+ m_progress = progress;
+ update();
+}
+
+bool QQuickUniversalProgressStrip::isIndeterminate() const
+{
+ return m_indeterminate;
+}
+
+void QQuickUniversalProgressStrip::setIndeterminate(bool indeterminate)
+{
+ if (indeterminate == m_indeterminate)
+ return;
+
+ m_indeterminate = indeterminate;
+ update();
}
QSGNode *QQuickUniversalProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
QQuickItemPrivate *d = QQuickItemPrivate::get(this);
- if (!oldNode)
- oldNode = new QSGSimpleRectNode(boundingRect(), Qt::transparent);
- static_cast<QSGSimpleRectNode *>(oldNode)->setRect(boundingRect());
+ QRectF bounds = boundingRect();
+ bounds.setHeight(implicitHeight());
+ bounds.moveTop((height() - bounds.height()) / 2.0);
+ if (!m_indeterminate)
+ bounds.setWidth(m_progress * bounds.width());
- QSGTransformNode *gridNode = static_cast<QSGTransformNode *>(oldNode->firstChild());
+ QSGSimpleRectNode *geometryNode = static_cast<QSGSimpleRectNode *>(oldNode);
+ if (!geometryNode)
+ geometryNode = new QSGSimpleRectNode(bounds, Qt::transparent);
+ geometryNode->setRect(bounds);
+ geometryNode->setColor(m_indeterminate ? Qt::transparent : m_color);
+
+ if (!m_indeterminate) {
+ while (QSGNode *node = geometryNode->firstChild())
+ delete node;
+ return geometryNode;
+ }
+
+ QSGTransformNode *gridNode = static_cast<QSGTransformNode *>(geometryNode->firstChild());
if (!gridNode) {
gridNode = new QSGTransformNode;
- oldNode->appendChildNode(gridNode);
+ geometryNode->appendChildNode(gridNode);
}
Q_ASSERT(gridNode->type() == QSGNode::TransformNodeType);
@@ -298,7 +340,7 @@ QSGNode *QQuickUniversalProgressStrip::updatePaintNode(QSGNode *oldNode, UpdateP
borderNode = borderNode->nextSibling();
}
- return oldNode;
+ return geometryNode;
}
QT_END_NAMESPACE
diff --git a/src/imports/controls/universal/qquickuniversalprogressstrip_p.h b/src/imports/controls/universal/qquickuniversalprogressstrip_p.h
index b61e73c6..3de856db 100644
--- a/src/imports/controls/universal/qquickuniversalprogressstrip_p.h
+++ b/src/imports/controls/universal/qquickuniversalprogressstrip_p.h
@@ -56,22 +56,29 @@ QT_BEGIN_NAMESPACE
class QQuickUniversalProgressStrip : public QQuickItem
{
Q_OBJECT
- Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
+ Q_PROPERTY(QColor color READ color WRITE setColor FINAL)
+ Q_PROPERTY(qreal progress READ progress WRITE setProgress FINAL)
+ Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL)
public:
- QQuickUniversalProgressStrip(QQuickItem *parent = Q_NULLPTR);
+ QQuickUniversalProgressStrip(QQuickItem *parent = nullptr);
QColor color() const;
void setColor(const QColor &color);
-Q_SIGNALS:
- void colorChanged();
+ qreal progress() const;
+ void setProgress(qreal progress);
+
+ bool isIndeterminate() const;
+ void setIndeterminate(bool indeterminate);
protected:
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
private:
QColor m_color;
+ qreal m_progress;
+ bool m_indeterminate;
};
class QQuickUniversalProgressStripAnimator : public QQuickAnimator
@@ -79,11 +86,11 @@ class QQuickUniversalProgressStripAnimator : public QQuickAnimator
Q_OBJECT
public:
- QQuickUniversalProgressStripAnimator(QObject *parent = Q_NULLPTR);
+ QQuickUniversalProgressStripAnimator(QObject *parent = nullptr);
protected:
- QString propertyName() const Q_DECL_OVERRIDE;
- QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
+ QString propertyName() const override;
+ QQuickAnimatorJob *createJob() const override;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/universal/qquickuniversalstyle.cpp b/src/imports/controls/universal/qquickuniversalstyle.cpp
index 2f9c86cb..fb948dec 100644
--- a/src/imports/controls/universal/qquickuniversalstyle.cpp
+++ b/src/imports/controls/universal/qquickuniversalstyle.cpp
@@ -39,7 +39,7 @@
#include <QtCore/qdebug.h>
#include <QtCore/qsettings.h>
#include <QtQml/qqmlinfo.h>
-#include <QtLabsControls/private/qquickstyle_p.h>
+#include <QtQuickControls/private/qquickstyleattached_p.h>
QT_BEGIN_NAMESPACE
@@ -135,7 +135,7 @@ static QRgb qquickuniversal_accent_color(QQuickUniversalStyle::Accent accent)
static QQuickUniversalStyle::Theme DefaultTheme = QQuickUniversalStyle::Light;
static QRgb DefaultAccent = qquickuniversal_accent_color(QQuickUniversalStyle::Cobalt);
-QQuickUniversalStyle::QQuickUniversalStyle(QObject *parent) : QQuickStyle(parent),
+QQuickUniversalStyle::QQuickUniversalStyle(QObject *parent) : QQuickStyleAttached(parent),
m_hasTheme(false), m_hasAccent(false), m_theme(DefaultTheme), m_accent(DefaultAccent)
{
init();
@@ -154,27 +154,30 @@ QQuickUniversalStyle::Theme QQuickUniversalStyle::theme() const
void QQuickUniversalStyle::setTheme(Theme theme)
{
m_hasTheme = true;
- if (m_theme != theme) {
- m_theme = theme;
- propagateTheme();
- emit themeChanged();
- emit paletteChanged();
- }
+ if (m_theme == theme)
+ return;
+
+ m_theme = theme;
+ propagateTheme();
+ emit themeChanged();
+ emit paletteChanged();
}
void QQuickUniversalStyle::inheritTheme(Theme theme)
{
- if (!m_hasTheme && m_theme != theme) {
- m_theme = theme;
- propagateTheme();
- emit themeChanged();
- emit paletteChanged();
- }
+ if (m_hasTheme || m_theme == theme)
+ return;
+
+ m_theme = theme;
+ propagateTheme();
+ emit themeChanged();
+ emit paletteChanged();
}
void QQuickUniversalStyle::propagateTheme()
{
- foreach (QQuickStyle *child, childStyles()) {
+ const auto styles = childStyles();
+ for (QQuickStyleAttached *child : styles) {
QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(child);
if (universal)
universal->inheritTheme(m_theme);
@@ -183,11 +186,12 @@ void QQuickUniversalStyle::propagateTheme()
void QQuickUniversalStyle::resetTheme()
{
- if (m_hasTheme) {
- m_hasTheme = false;
- QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(parentStyle());
- inheritTheme(universal ? universal->theme() : DefaultTheme);
- }
+ if (!m_hasTheme)
+ return;
+
+ m_hasTheme = false;
+ QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(parentStyle());
+ inheritTheme(universal ? universal->theme() : DefaultTheme);
}
QVariant QQuickUniversalStyle::accent() const
@@ -220,25 +224,28 @@ void QQuickUniversalStyle::setAccent(const QVariant &var)
}
m_hasAccent = true;
- if (m_accent != accent) {
- m_accent = accent;
- propagateAccent();
- emit accentChanged();
- }
+ if (m_accent == accent)
+ return;
+
+ m_accent = accent;
+ propagateAccent();
+ emit accentChanged();
}
void QQuickUniversalStyle::inheritAccent(QRgb accent)
{
- if (!m_hasAccent && m_accent != accent) {
- m_accent = accent;
- propagateAccent();
- emit accentChanged();
- }
+ if (m_hasAccent || m_accent == accent)
+ return;
+
+ m_accent = accent;
+ propagateAccent();
+ emit accentChanged();
}
void QQuickUniversalStyle::propagateAccent()
{
- foreach (QQuickStyle *child, childStyles()) {
+ const auto styles = childStyles();
+ for (QQuickStyleAttached *child : styles) {
QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(child);
if (universal)
universal->inheritAccent(m_accent);
@@ -247,11 +254,12 @@ void QQuickUniversalStyle::propagateAccent()
void QQuickUniversalStyle::resetAccent()
{
- if (m_hasAccent) {
- m_hasAccent = false;
- QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(parentStyle());
- inheritAccent(universal ? universal->m_accent : DefaultAccent);
- }
+ if (!m_hasAccent)
+ return;
+
+ m_hasAccent = false;
+ QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(parentStyle());
+ inheritAccent(universal ? universal->m_accent : DefaultAccent);
}
QColor QQuickUniversalStyle::altHighColor() const
@@ -379,7 +387,7 @@ QColor QQuickUniversalStyle::getColor(SystemColor role) const
return m_theme == QQuickUniversalStyle::Dark ? qquickuniversal_dark_color(role) : qquickuniversal_light_color(role);
}
-void QQuickUniversalStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent)
+void QQuickUniversalStyle::parentStyleChange(QQuickStyleAttached *newParent, QQuickStyleAttached *oldParent)
{
Q_UNUSED(oldParent);
QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(newParent);
@@ -400,7 +408,7 @@ void QQuickUniversalStyle::init()
{
static bool defaultsInitialized = false;
if (!defaultsInitialized) {
- QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Universal"));
+ QSharedPointer<QSettings> settings = QQuickStyleAttached::settings(QStringLiteral("Universal"));
if (!settings.isNull()) {
bool ok = false;
QByteArray value = settings->value(QStringLiteral("Theme")).toByteArray();
@@ -425,7 +433,7 @@ void QQuickUniversalStyle::init()
defaultsInitialized = true;
}
- QQuickStyle::init(); // TODO: lazy init?
+ QQuickStyleAttached::init(); // TODO: lazy init?
}
QT_END_NAMESPACE
diff --git a/src/imports/controls/universal/qquickuniversalstyle_p.h b/src/imports/controls/universal/qquickuniversalstyle_p.h
index 00a04c65..b0787389 100644
--- a/src/imports/controls/universal/qquickuniversalstyle_p.h
+++ b/src/imports/controls/universal/qquickuniversalstyle_p.h
@@ -49,13 +49,13 @@
//
#include <QtGui/qcolor.h>
-#include <QtLabsControls/private/qquickstyle_p.h>
+#include <QtQuickControls/private/qquickstyleattached_p.h>
QT_BEGIN_NAMESPACE
class QQuickUniversalStylePrivate;
-class QQuickUniversalStyle : public QQuickStyle
+class QQuickUniversalStyle : public QQuickStyleAttached
{
Q_OBJECT
Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
@@ -87,7 +87,7 @@ class QQuickUniversalStyle : public QQuickStyle
Q_PROPERTY(QColor listMediumColor READ listMediumColor NOTIFY paletteChanged FINAL)
public:
- explicit QQuickUniversalStyle(QObject *parent = Q_NULLPTR);
+ explicit QQuickUniversalStyle(QObject *parent = nullptr);
static QQuickUniversalStyle *qmlAttachedProperties(QObject *object);
@@ -190,7 +190,7 @@ Q_SIGNALS:
void paletteChanged();
protected:
- void parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent) Q_DECL_OVERRIDE;
+ void parentStyleChange(QQuickStyleAttached *newParent, QQuickStyleAttached *oldParent) override;
private:
void init();
diff --git a/src/imports/controls/universal/qquickuniversaltheme.cpp b/src/imports/controls/universal/qquickuniversaltheme.cpp
index 290faa5d..066d1194 100644
--- a/src/imports/controls/universal/qquickuniversaltheme.cpp
+++ b/src/imports/controls/universal/qquickuniversaltheme.cpp
@@ -59,10 +59,6 @@ QQuickUniversalTheme::QQuickUniversalTheme(QPlatformTheme *theme)
tabButtonFont.setWeight(QFont::Light);
}
-QQuickUniversalTheme::~QQuickUniversalTheme()
-{
-}
-
const QFont *QQuickUniversalTheme::font(QPlatformTheme::Font type) const
{
switch (type) {
diff --git a/src/imports/controls/universal/qquickuniversaltheme_p.h b/src/imports/controls/universal/qquickuniversaltheme_p.h
index 20243917..0435d46c 100644
--- a/src/imports/controls/universal/qquickuniversaltheme_p.h
+++ b/src/imports/controls/universal/qquickuniversaltheme_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKUNIVERSALTHEME_H
-#define QQUICKUNIVERSALTHEME_H
+#ifndef QQUICKUNIVERSALTHEME_P_H
+#define QQUICKUNIVERSALTHEME_P_H
//
// W A R N I N G
@@ -48,20 +48,17 @@
// We mean it.
//
-#include <QtGui/qpa/qplatformtheme.h>
#include <QtGui/qfont.h>
-#include <QtLabsControls/private/qquickproxytheme_p.h>
+#include <QtQuickControls/private/qquickproxytheme_p.h>
QT_BEGIN_NAMESPACE
class QQuickUniversalTheme : public QQuickProxyTheme
{
public:
- QQuickUniversalTheme(QPlatformTheme *theme);
+ explicit QQuickUniversalTheme(QPlatformTheme *theme = nullptr);
- ~QQuickUniversalTheme();
-
- const QFont *font(Font type = SystemFont) const Q_DECL_OVERRIDE;
+ const QFont *font(Font type = SystemFont) const override;
private:
QFont systemFont;
@@ -71,4 +68,4 @@ private:
QT_END_NAMESPACE
-#endif // QQUICKUNIVERSALTHEME_H
+#endif // QQUICKUNIVERSALTHEME_P_H
diff --git a/src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp b/src/imports/controls/universal/qtquickuniversalstyleplugin.cpp
index b3a82781..952f0302 100644
--- a/src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp
+++ b/src/imports/controls/universal/qtquickuniversalstyleplugin.cpp
@@ -36,37 +36,46 @@
#include <QtQml/qqmlextensionplugin.h>
#include "qquickuniversalfocusrectangle_p.h"
-#include "qquickuniversalimageprovider_p.h"
#include "qquickuniversalprogressring_p.h"
#include "qquickuniversalprogressstrip_p.h"
#include "qquickuniversalstyle_p.h"
#include "qquickuniversaltheme_p.h"
#include <QtGui/private/qguiapplication_p.h>
-#include <QtLabsControls/private/qquickstyleselector_p.h>
+#include <QtQuickControls/private/qquickcolorimageprovider_p.h>
+#include <QtQuickControls/qquickstyle.h>
static inline void initResources()
{
- Q_INIT_RESOURCE(qtlabsuniversalstyleplugin);
+ Q_INIT_RESOURCE(qtquickuniversalstyleplugin);
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(qmake_Qt_labs_controls_universal);
+#endif
}
QT_BEGIN_NAMESPACE
-class QtLabsUniversalStylePlugin: public QQmlExtensionPlugin
+class QtQuickUniversalStylePlugin: public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
public:
- ~QtLabsUniversalStylePlugin();
- void registerTypes(const char *uri) Q_DECL_OVERRIDE;
- void initializeEngine(QQmlEngine *engine, const char *uri) Q_DECL_OVERRIDE;
+ QtQuickUniversalStylePlugin(QObject *parent = nullptr);
+ ~QtQuickUniversalStylePlugin();
+ void registerTypes(const char *uri) override;
+ void initializeEngine(QQmlEngine *engine, const char *uri) override;
private:
QQuickProxyTheme *theme;
};
-QtLabsUniversalStylePlugin::~QtLabsUniversalStylePlugin()
+QtQuickUniversalStylePlugin::QtQuickUniversalStylePlugin(QObject *parent) : QQmlExtensionPlugin(parent)
+{
+ initResources();
+}
+
+QtQuickUniversalStylePlugin::~QtQuickUniversalStylePlugin()
{
if (theme) {
QPlatformTheme *old = theme->theme();
@@ -75,24 +84,17 @@ QtLabsUniversalStylePlugin::~QtLabsUniversalStylePlugin()
}
}
-void QtLabsUniversalStylePlugin::registerTypes(const char *uri)
+void QtQuickUniversalStylePlugin::registerTypes(const char *uri)
{
qmlRegisterUncreatableType<QQuickUniversalStyle>(uri, 1, 0, "Universal", tr("Universal is an attached property"));
}
-void QtLabsUniversalStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
+void QtQuickUniversalStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
{
- QQuickStyleSelector selector;
- if (selector.style() == QLatin1String("universal")) {
- QPlatformTheme *old = QGuiApplicationPrivate::platform_theme;
- if (old) {
- QQuickProxyTheme *theme = new QQuickUniversalTheme(old);
- QGuiApplicationPrivate::platform_theme = theme;
- }
- }
+ if (QQuickStyle::name().compare(QLatin1String("universal"), Qt::CaseInsensitive) == 0)
+ QGuiApplicationPrivate::platform_theme = new QQuickUniversalTheme;
- initResources();
- engine->addImageProvider(QStringLiteral("universal"), new QQuickUniversalImageProvider);
+ engine->addImageProvider(QStringLiteral("universal"), new QQuickColorImageProvider(QStringLiteral(":/qt-project.org/imports/Qt/labs/controls/universal/images")));
QByteArray import = QByteArray(uri) + ".impl";
qmlRegisterType<QQuickUniversalFocusRectangle>(import, 1, 0, "FocusRectangle");
@@ -104,4 +106,4 @@ void QtLabsUniversalStylePlugin::initializeEngine(QQmlEngine *engine, const char
QT_END_NAMESPACE
-#include "qtlabsuniversalstyleplugin.moc"
+#include "qtquickuniversalstyleplugin.moc"
diff --git a/src/imports/controls/universal/qtlabsuniversalstyleplugin.qrc b/src/imports/controls/universal/qtquickuniversalstyleplugin.qrc
index 5a0249d7..5a0249d7 100644
--- a/src/imports/controls/universal/qtlabsuniversalstyleplugin.qrc
+++ b/src/imports/controls/universal/qtquickuniversalstyleplugin.qrc
diff --git a/src/imports/controls/universal/universal.pri b/src/imports/controls/universal/universal.pri
index c7717d78..dc3002a3 100644
--- a/src/imports/controls/universal/universal.pri
+++ b/src/imports/controls/universal/universal.pri
@@ -23,6 +23,7 @@ QML_FILES += \
$$PWD/Slider.qml \
$$PWD/SpinBox.qml \
$$PWD/StackView.qml \
+ $$PWD/SwipeDelegate.qml \
$$PWD/Switch.qml \
$$PWD/TabBar.qml \
$$PWD/TabButton.qml \
@@ -34,7 +35,6 @@ QML_FILES += \
HEADERS += \
$$PWD/qquickuniversalfocusrectangle_p.h \
- $$PWD/qquickuniversalimageprovider_p.h \
$$PWD/qquickuniversalprogressring_p.h \
$$PWD/qquickuniversalprogressstrip_p.h \
$$PWD/qquickuniversalstyle_p.h \
@@ -42,7 +42,6 @@ HEADERS += \
SOURCES += \
$$PWD/qquickuniversalfocusrectangle.cpp \
- $$PWD/qquickuniversalimageprovider.cpp \
$$PWD/qquickuniversalprogressring.cpp \
$$PWD/qquickuniversalprogressstrip.cpp \
$$PWD/qquickuniversalstyle.cpp \
diff --git a/src/imports/controls/universal/universal.pro b/src/imports/controls/universal/universal.pro
index 88bad8f7..14058547 100644
--- a/src/imports/controls/universal/universal.pro
+++ b/src/imports/controls/universal/universal.pro
@@ -1,9 +1,9 @@
-TARGET = qtlabsuniversalstyleplugin
+TARGET = qtquickuniversalstyleplugin
TARGETPATH = Qt/labs/controls/universal
IMPORT_VERSION = 1.0
QT += qml quick
-QT_PRIVATE += core-private gui-private qml-private quick-private labstemplates-private labscontrols-private
+QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates-private quickcontrols-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
@@ -11,10 +11,10 @@ OTHER_FILES += \
qmldir
SOURCES += \
- $$PWD/qtlabsuniversalstyleplugin.cpp
+ $$PWD/qtquickuniversalstyleplugin.cpp
RESOURCES += \
- $$PWD/qtlabsuniversalstyleplugin.qrc
+ $$PWD/qtquickuniversalstyleplugin.qrc
include(universal.pri)
diff --git a/src/imports/templates/plugins.qmltypes b/src/imports/templates/plugins.qmltypes
index 05491643..6237f9be 100644
--- a/src/imports/templates/plugins.qmltypes
+++ b/src/imports/templates/plugins.qmltypes
@@ -22,7 +22,6 @@ Module {
Property { name: "autoExclusive"; type: "bool" }
Property { name: "autoRepeat"; type: "bool" }
Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
- Property { name: "label"; type: "QQuickItem"; isPointer: true }
Signal { name: "pressed" }
Signal { name: "released" }
Signal { name: "canceled" }
@@ -38,6 +37,7 @@ Module {
exports: ["Qt.labs.templates/ApplicationWindow 1.0"]
exportMetaObjectRevisions: [0]
attachedType: "QQuickApplicationWindowAttached"
+ Property { name: "background"; type: "QQuickItem"; isPointer: true }
Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true }
@@ -180,7 +180,11 @@ Module {
Property { name: "spacing"; type: "double" }
Property { name: "locale"; type: "QLocale" }
Property { name: "mirrored"; type: "bool"; isReadonly: true }
+ Property { name: "focusPolicy"; type: "Qt::FocusPolicy" }
Property { name: "focusReason"; type: "Qt::FocusReason" }
+ Property { name: "hovered"; type: "bool"; isReadonly: true }
+ Property { name: "hoverEnabled"; type: "bool" }
+ Property { name: "wheelEnabled"; type: "bool" }
Property { name: "background"; type: "QQuickItem"; isPointer: true }
Property { name: "contentItem"; type: "QQuickItem"; isPointer: true }
}
@@ -230,7 +234,6 @@ Module {
prototype: "QQuickPane"
exports: ["Qt.labs.templates/Frame 1.0"]
exportMetaObjectRevisions: [0]
- Property { name: "frame"; type: "QQuickItem"; isPointer: true }
}
Component {
name: "QQuickGroupBox"
@@ -433,7 +436,6 @@ Module {
Property { name: "position"; type: "double"; isReadonly: true }
Property { name: "visualPosition"; type: "double"; isReadonly: true }
Property { name: "indeterminate"; type: "bool" }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
}
Component {
name: "QQuickRadioButton"
@@ -463,7 +465,6 @@ Module {
Property { name: "stepSize"; type: "double" }
Property { name: "snapMode"; type: "SnapMode" }
Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "track"; type: "QQuickItem"; isPointer: true }
Method {
name: "setValues"
Parameter { name: "firstValue"; type: "double" }
@@ -490,10 +491,12 @@ Module {
attachedType: "QQuickScrollBarAttached"
Property { name: "size"; type: "double" }
Property { name: "position"; type: "double" }
+ Property { name: "stepSize"; type: "double" }
Property { name: "active"; type: "bool" }
Property { name: "pressed"; type: "bool" }
Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "handle"; type: "QQuickItem"; isPointer: true }
+ Method { name: "increase" }
+ Method { name: "decrease" }
Method {
name: "setSize"
Parameter { name: "size"; type: "double" }
@@ -520,7 +523,6 @@ Module {
Property { name: "position"; type: "double" }
Property { name: "active"; type: "bool" }
Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
Method {
name: "setSize"
Parameter { name: "size"; type: "double" }
@@ -560,7 +562,6 @@ Module {
Property { name: "pressed"; type: "bool" }
Property { name: "orientation"; type: "Qt::Orientation" }
Property { name: "handle"; type: "QQuickItem"; isPointer: true }
- Property { name: "track"; type: "QQuickItem"; isPointer: true }
Method { name: "increase" }
Method { name: "decrease" }
}
@@ -574,6 +575,7 @@ Module {
Property { name: "to"; type: "int" }
Property { name: "value"; type: "int" }
Property { name: "stepSize"; type: "int" }
+ Property { name: "editable"; type: "bool" }
Property { name: "validator"; type: "QValidator"; isPointer: true }
Property { name: "textFromValue"; type: "QJSValue" }
Property { name: "valueFromText"; type: "QJSValue" }
@@ -701,6 +703,14 @@ Module {
prototype: "QQuickContainer"
exports: ["Qt.labs.templates/TabBar 1.0"]
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Position"
+ values: {
+ "Header": 0,
+ "Footer": 1
+ }
+ }
+ Property { name: "position"; type: "Position" }
}
Component {
name: "QQuickTabButton"
@@ -1006,6 +1016,8 @@ Module {
Property { name: "leftPadding"; revision: 6; type: "double" }
Property { name: "rightPadding"; revision: 6; type: "double" }
Property { name: "bottomPadding"; revision: 6; type: "double" }
+ Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true }
+ Signal { name: "preeditTextChanged"; revision: 7 }
Signal { name: "contentSizeChanged" }
Signal {
name: "colorChanged"
@@ -1117,6 +1129,7 @@ Module {
revision: 2
Parameter { name: "text"; type: "string" }
}
+ Method { name: "clear"; revision: 7 }
Method {
name: "inputMethodQuery"
revision: 4
@@ -1269,6 +1282,7 @@ Module {
Property { name: "passwordCharacter"; type: "string" }
Property { name: "passwordMaskDelay"; revision: 3; type: "int" }
Property { name: "displayText"; type: "string"; isReadonly: true }
+ Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true }
Property { name: "autoScroll"; type: "bool" }
Property { name: "selectByMouse"; type: "bool" }
Property { name: "mouseSelectionMode"; type: "SelectionMode" }
@@ -1324,6 +1338,7 @@ Module {
revision: 3
Parameter { name: "delay"; type: "int" }
}
+ Signal { name: "preeditTextChanged"; revision: 7 }
Signal {
name: "activeFocusOnPressChanged"
Parameter { name: "activeFocusOnPress"; type: "bool" }
@@ -1380,6 +1395,7 @@ Module {
revision: 3
Parameter { name: "position"; type: "int" }
}
+ Method { name: "clear"; revision: 7 }
Method {
name: "positionAt"
Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
@@ -1418,6 +1434,14 @@ Module {
prototype: "QQuickFrame"
exports: ["Qt.labs.templates/ToolBar 1.0"]
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Position"
+ values: {
+ "Header": 0,
+ "Footer": 1
+ }
+ }
+ Property { name: "position"; type: "Position" }
}
Component {
name: "QQuickToolButton"
diff --git a/src/imports/templates/qmldir b/src/imports/templates/qmldir
index 74dcf0ff..de0d0cfc 100644
--- a/src/imports/templates/qmldir
+++ b/src/imports/templates/qmldir
@@ -1,4 +1,4 @@
module Qt.labs.templates
-plugin qtlabstemplatesplugin
-classname QtLabsTemplatesPlugin
+plugin qtquicktemplatesplugin
+classname QtQuickTemplatesPlugin
depends QtQuick.Window 2.2
diff --git a/src/imports/templates/qtlabstemplatesplugin.cpp b/src/imports/templates/qtquicktemplatesplugin.cpp
index fd5060d4..e8a679a4 100644
--- a/src/imports/templates/qtlabstemplatesplugin.cpp
+++ b/src/imports/templates/qtquicktemplatesplugin.cpp
@@ -36,57 +36,71 @@
#include <QtQml/qqmlextensionplugin.h>
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
-#include <QtLabsTemplates/private/qquickapplicationwindow_p.h>
-#include <QtLabsTemplates/private/qquickbusyindicator_p.h>
-#include <QtLabsTemplates/private/qquickbutton_p.h>
-#include <QtLabsTemplates/private/qquickcheckbox_p.h>
-#include <QtLabsTemplates/private/qquickcombobox_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
-#include <QtLabsTemplates/private/qquickcontainer_p.h>
-#include <QtLabsTemplates/private/qquickdial_p.h>
-#include <QtLabsTemplates/private/qquickdrawer_p.h>
-#include <QtLabsTemplates/private/qquickframe_p.h>
-#include <QtLabsTemplates/private/qquickgroupbox_p.h>
-#include <QtLabsTemplates/private/qquickitemdelegate_p.h>
-#include <QtLabsTemplates/private/qquicklabel_p.h>
-#include <QtLabsTemplates/private/qquickmenu_p.h>
-#include <QtLabsTemplates/private/qquickmenuitem_p.h>
-#include <QtLabsTemplates/private/qquickoverlay_p.h>
-#include <QtLabsTemplates/private/qquickpage_p.h>
-#include <QtLabsTemplates/private/qquickpageindicator_p.h>
-#include <QtLabsTemplates/private/qquickpane_p.h>
-#include <QtLabsTemplates/private/qquickpopup_p.h>
-#include <QtLabsTemplates/private/qquickprogressbar_p.h>
-#include <QtLabsTemplates/private/qquickradiobutton_p.h>
-#include <QtLabsTemplates/private/qquickrangeslider_p.h>
-#include <QtLabsTemplates/private/qquickscrollbar_p.h>
-#include <QtLabsTemplates/private/qquickscrollindicator_p.h>
-#include <QtLabsTemplates/private/qquickslider_p.h>
-#include <QtLabsTemplates/private/qquickspinbox_p.h>
-#include <QtLabsTemplates/private/qquickstackview_p.h>
-#include <QtLabsTemplates/private/qquickswipeview_p.h>
-#include <QtLabsTemplates/private/qquickswitch_p.h>
-#include <QtLabsTemplates/private/qquicktabbar_p.h>
-#include <QtLabsTemplates/private/qquicktabbutton_p.h>
-#include <QtLabsTemplates/private/qquicktextarea_p.h>
-#include <QtLabsTemplates/private/qquicktextfield_p.h>
-#include <QtLabsTemplates/private/qquicktoolbar_p.h>
-#include <QtLabsTemplates/private/qquicktoolbutton_p.h>
-#include <QtLabsTemplates/private/qquicktumbler_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickapplicationwindow_p.h>
+#include <QtQuickTemplates/private/qquickbusyindicator_p.h>
+#include <QtQuickTemplates/private/qquickbutton_p.h>
+#include <QtQuickTemplates/private/qquickcheckbox_p.h>
+#include <QtQuickTemplates/private/qquickcombobox_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontainer_p.h>
+#include <QtQuickTemplates/private/qquickdial_p.h>
+#include <QtQuickTemplates/private/qquickdrawer_p.h>
+#include <QtQuickTemplates/private/qquickframe_p.h>
+#include <QtQuickTemplates/private/qquickgroupbox_p.h>
+#include <QtQuickTemplates/private/qquickitemdelegate_p.h>
+#include <QtQuickTemplates/private/qquicklabel_p.h>
+#include <QtQuickTemplates/private/qquickmenu_p.h>
+#include <QtQuickTemplates/private/qquickmenuitem_p.h>
+#include <QtQuickTemplates/private/qquickoverlay_p.h>
+#include <QtQuickTemplates/private/qquickpage_p.h>
+#include <QtQuickTemplates/private/qquickpageindicator_p.h>
+#include <QtQuickTemplates/private/qquickpane_p.h>
+#include <QtQuickTemplates/private/qquickpopup_p.h>
+#include <QtQuickTemplates/private/qquickprogressbar_p.h>
+#include <QtQuickTemplates/private/qquickradiobutton_p.h>
+#include <QtQuickTemplates/private/qquickrangeslider_p.h>
+#include <QtQuickTemplates/private/qquickscrollbar_p.h>
+#include <QtQuickTemplates/private/qquickscrollindicator_p.h>
+#include <QtQuickTemplates/private/qquickslider_p.h>
+#include <QtQuickTemplates/private/qquickspinbox_p.h>
+#include <QtQuickTemplates/private/qquickstackview_p.h>
+#include <QtQuickTemplates/private/qquickswipedelegate_p.h>
+#include <QtQuickTemplates/private/qquickswipeview_p.h>
+#include <QtQuickTemplates/private/qquickswitch_p.h>
+#include <QtQuickTemplates/private/qquicktabbar_p.h>
+#include <QtQuickTemplates/private/qquicktabbutton_p.h>
+#include <QtQuickTemplates/private/qquicktextarea_p.h>
+#include <QtQuickTemplates/private/qquicktextfield_p.h>
+#include <QtQuickTemplates/private/qquicktoolbar_p.h>
+#include <QtQuickTemplates/private/qquicktoolbutton_p.h>
+#include <QtQuickTemplates/private/qquicktumbler_p.h>
+
+static inline void initResources()
+{
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(qmake_Qt_labs_templates);
+#endif
+}
QT_BEGIN_NAMESPACE
-class QtLabsTemplatesPlugin: public QQmlExtensionPlugin
+class QtQuickTemplatesPlugin: public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
public:
+ QtQuickTemplatesPlugin(QObject *parent = nullptr);
void registerTypes(const char *uri);
};
-void QtLabsTemplatesPlugin::registerTypes(const char *uri)
+QtQuickTemplatesPlugin::QtQuickTemplatesPlugin(QObject *parent) : QQmlExtensionPlugin(parent)
+{
+ initResources();
+}
+
+void QtQuickTemplatesPlugin::registerTypes(const char *uri)
{
qmlRegisterType<QQuickAbstractButton>(uri, 1, 0, "AbstractButton");
qmlRegisterType<QQuickApplicationWindow>(uri, 1, 0, "ApplicationWindow");
@@ -120,6 +134,8 @@ void QtLabsTemplatesPlugin::registerTypes(const char *uri)
qmlRegisterType<QQuickSpinBox>(uri, 1, 0, "SpinBox");
qmlRegisterType<QQuickSpinButton>();
qmlRegisterType<QQuickStackView>(uri, 1, 0, "StackView");
+ qmlRegisterType<QQuickSwipeDelegate>(uri, 1, 0, "SwipeDelegate");
+ qmlRegisterType<QQuickSwipeExposure>();
qmlRegisterType<QQuickSwipeViewAttached>();
qmlRegisterType<QQuickSwipeView>(uri, 1, 0, "SwipeView");
qmlRegisterType<QQuickSwitch>(uri, 1, 0, "Switch");
@@ -141,4 +157,4 @@ void QtLabsTemplatesPlugin::registerTypes(const char *uri)
QT_END_NAMESPACE
-#include "qtlabstemplatesplugin.moc"
+#include "qtquicktemplatesplugin.moc"
diff --git a/src/imports/templates/templates.pro b/src/imports/templates/templates.pro
index 0e48168c..f3dd85c9 100644
--- a/src/imports/templates/templates.pro
+++ b/src/imports/templates/templates.pro
@@ -1,9 +1,9 @@
-TARGET = qtlabstemplatesplugin
+TARGET = qtquicktemplatesplugin
TARGETPATH = Qt/labs/templates
IMPORT_VERSION = 1.0
QT += qml quick
-QT_PRIVATE += core-private gui-private qml-private quick-private labstemplates-private
+QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
@@ -11,7 +11,7 @@ OTHER_FILES += \
qmldir
SOURCES += \
- $$PWD/qtlabstemplatesplugin.cpp
+ $$PWD/qtquicktemplatesplugin.cpp
CONFIG += no_cxx_module
load(qml_plugin)
diff --git a/src/templates/qquickabstractbutton.cpp b/src/templates/qquickabstractbutton.cpp
index 95afc09d..a3f7e100 100644
--- a/src/templates/qquickabstractbutton.cpp
+++ b/src/templates/qquickabstractbutton.cpp
@@ -55,7 +55,7 @@ static const int AUTO_REPEAT_INTERVAL = 100;
\instantiates QQuickAbstractButton
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-buttons
- \brief The base of all button controls.
+ \brief Base type of all button controls.
AbstractButton provides the interface for controls with button-like
behavior; for example, push buttons and checkable controls like
@@ -107,8 +107,7 @@ static const int AUTO_REPEAT_INTERVAL = 100;
QQuickAbstractButtonPrivate::QQuickAbstractButtonPrivate() :
pressed(false), checked(false), checkable(false), highlighted(false), autoExclusive(false), autoRepeat(false), wasHeld(false),
- holdTimer(0), delayTimer(0), repeatTimer(0), repeatButton(Qt::NoButton),
- label(Q_NULLPTR), indicator(Q_NULLPTR), group(Q_NULLPTR)
+ holdTimer(0), delayTimer(0), repeatTimer(0), repeatButton(Qt::NoButton), indicator(nullptr), group(nullptr)
{
}
@@ -169,7 +168,7 @@ QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const
if (group)
return qobject_cast<QQuickAbstractButton *>(group->checkedButton());
- QList<QQuickAbstractButton *> buttons = findExclusiveButtons();
+ const QList<QQuickAbstractButton *> buttons = findExclusiveButtons();
// TODO: A singular QRadioButton can be unchecked, which seems logical,
// because there's nothing to be exclusive with. However, a RadioButton
// from QtQuick.Controls 1.x can never be unchecked, which is the behavior
@@ -177,13 +176,13 @@ QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const
// gives the QRadioButton behavior. Notice that tst_radiobutton.qml needs
// to be updated.
if (!autoExclusive /*|| buttons.count() == 1*/)
- return Q_NULLPTR;
+ return nullptr;
- foreach (QQuickAbstractButton *button, buttons) {
+ for (QQuickAbstractButton *button : buttons) {
if (button->isChecked() && button != q)
return button;
}
- return checked ? const_cast<QQuickAbstractButton *>(q) : Q_NULLPTR;
+ return checked ? const_cast<QQuickAbstractButton *>(q) : nullptr;
}
QList<QQuickAbstractButton *> QQuickAbstractButtonPrivate::findExclusiveButtons() const
@@ -198,7 +197,8 @@ QList<QQuickAbstractButton *> QQuickAbstractButtonPrivate::findExclusiveButtons(
buttons += button;
}
} else if (parentItem) {
- foreach (QQuickItem *child, parentItem->childItems()) {
+ const auto childItems = parentItem->childItems();
+ for (QQuickItem *child : childItems) {
QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(child);
if (button && button->autoExclusive() && !QQuickAbstractButtonPrivate::get(button)->group)
buttons += button;
@@ -234,9 +234,9 @@ QQuickAbstractButton::~QQuickAbstractButton()
This property holds a textual description of the button.
\note The text is used for accessibility purposes, so it makes sense to
- set a textual description even if the label item is an image.
+ set a textual description even if the content item is an image.
- \sa label
+ \sa {Control::contentItem}{contentItem}
*/
QString QQuickAbstractButton::text() const
{
@@ -247,11 +247,12 @@ QString QQuickAbstractButton::text() const
void QQuickAbstractButton::setText(const QString &text)
{
Q_D(QQuickAbstractButton);
- if (d->text != text) {
- d->text = text;
- setAccessibleName(text);
- emit textChanged();
- }
+ if (d->text == text)
+ return;
+
+ d->text = text;
+ setAccessibleName(text);
+ emit textChanged();
}
/*!
@@ -268,11 +269,12 @@ bool QQuickAbstractButton::isPressed() const
void QQuickAbstractButton::setPressed(bool isPressed)
{
Q_D(QQuickAbstractButton);
- if (d->pressed != isPressed) {
- d->pressed = isPressed;
- setAccessibleProperty("pressed", isPressed);
- emit pressedChanged();
- }
+ if (d->pressed == isPressed)
+ return;
+
+ d->pressed = isPressed;
+ setAccessibleProperty("pressed", isPressed);
+ emit pressedChanged();
}
/*!
@@ -289,15 +291,16 @@ bool QQuickAbstractButton::isChecked() const
void QQuickAbstractButton::setChecked(bool checked)
{
Q_D(QQuickAbstractButton);
+ if (d->checked == checked)
+ return;
+
if (checked && !d->checkable)
setCheckable(true);
- if (d->checked != checked) {
- d->checked = checked;
- setAccessibleProperty("checked", checked);
- checkStateSet();
- emit checkedChanged();
- }
+ d->checked = checked;
+ setAccessibleProperty("checked", checked);
+ checkStateSet();
+ emit checkedChanged();
}
/*!
@@ -314,11 +317,12 @@ bool QQuickAbstractButton::isCheckable() const
void QQuickAbstractButton::setCheckable(bool checkable)
{
Q_D(QQuickAbstractButton);
- if (d->checkable != checkable) {
- d->checkable = checkable;
- setAccessibleProperty("checkable", checkable);
- emit checkableChanged();
- }
+ if (d->checkable == checkable)
+ return;
+
+ d->checkable = checkable;
+ setAccessibleProperty("checkable", checkable);
+ emit checkableChanged();
}
/*!
@@ -340,10 +344,11 @@ bool QQuickAbstractButton::isHighlighted() const
void QQuickAbstractButton::setHighlighted(bool highlighted)
{
Q_D(QQuickAbstractButton);
- if (highlighted != d->highlighted) {
- d->highlighted = highlighted;
- emit highlightedChanged();
- }
+ if (highlighted == d->highlighted)
+ return;
+
+ d->highlighted = highlighted;
+ emit highlightedChanged();
}
/*!
@@ -369,10 +374,11 @@ bool QQuickAbstractButton::autoExclusive() const
void QQuickAbstractButton::setAutoExclusive(bool exclusive)
{
Q_D(QQuickAbstractButton);
- if (d->autoExclusive != exclusive) {
- d->autoExclusive = exclusive;
- emit autoExclusiveChanged();
- }
+ if (d->autoExclusive == exclusive)
+ return;
+
+ d->autoExclusive = exclusive;
+ emit autoExclusiveChanged();
}
/*!
@@ -392,11 +398,12 @@ bool QQuickAbstractButton::autoRepeat() const
void QQuickAbstractButton::setAutoRepeat(bool repeat)
{
Q_D(QQuickAbstractButton);
- if (d->autoRepeat != repeat) {
- d->stopPressRepeat();
- d->autoRepeat = repeat;
- emit autoRepeatChanged();
- }
+ if (d->autoRepeat == repeat)
+ return;
+
+ d->stopPressRepeat();
+ d->autoRepeat = repeat;
+ emit autoRepeatChanged();
}
/*!
@@ -413,41 +420,17 @@ QQuickItem *QQuickAbstractButton::indicator() const
void QQuickAbstractButton::setIndicator(QQuickItem *indicator)
{
Q_D(QQuickAbstractButton);
- if (d->indicator != indicator) {
- delete d->indicator;
- d->indicator = indicator;
- if (indicator) {
- if (!indicator->parentItem())
- indicator->setParentItem(this);
- indicator->setAcceptedMouseButtons(Qt::LeftButton);
- }
- emit indicatorChanged();
- }
-}
-
-/*!
- \qmlproperty Item Qt.labs.controls::AbstractButton::label
-
- This property holds the label item.
-
- \sa text
-*/
-QQuickItem *QQuickAbstractButton::label() const
-{
- Q_D(const QQuickAbstractButton);
- return d->label;
-}
-
-void QQuickAbstractButton::setLabel(QQuickItem *label)
-{
- Q_D(QQuickAbstractButton);
- if (d->label != label) {
- delete d->label;
- d->label = label;
- if (label && !label->parentItem())
- label->setParentItem(this);
- emit labelChanged();
+ if (d->indicator == indicator)
+ return;
+
+ delete d->indicator;
+ d->indicator = indicator;
+ if (indicator) {
+ if (!indicator->parentItem())
+ indicator->setParentItem(this);
+ indicator->setAcceptedMouseButtons(Qt::LeftButton);
}
+ emit indicatorChanged();
}
/*!
diff --git a/src/templates/qquickabstractbutton_p.h b/src/templates/qquickabstractbutton_p.h
index f3020bc3..3877a96d 100644
--- a/src/templates/qquickabstractbutton_p.h
+++ b/src/templates/qquickabstractbutton_p.h
@@ -48,13 +48,13 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickAbstractButtonPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickAbstractButton : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickAbstractButton : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL)
@@ -65,10 +65,9 @@ class Q_LABSTEMPLATES_EXPORT QQuickAbstractButton : public QQuickControl
Q_PROPERTY(bool autoExclusive READ autoExclusive WRITE setAutoExclusive NOTIFY autoExclusiveChanged FINAL)
Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat NOTIFY autoRepeatChanged FINAL)
Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL)
- Q_PROPERTY(QQuickItem *label READ label WRITE setLabel NOTIFY labelChanged FINAL)
public:
- explicit QQuickAbstractButton(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickAbstractButton(QQuickItem *parent = nullptr);
~QQuickAbstractButton();
QString text() const;
@@ -95,9 +94,6 @@ public:
QQuickItem *indicator() const;
void setIndicator(QQuickItem *indicator);
- QQuickItem *label() const;
- void setLabel(QQuickItem *label);
-
public Q_SLOTS:
void toggle();
@@ -116,27 +112,26 @@ Q_SIGNALS:
void autoExclusiveChanged();
void autoRepeatChanged();
void indicatorChanged();
- void labelChanged();
protected:
QQuickAbstractButton(QQuickAbstractButtonPrivate &dd, QQuickItem *parent);
- void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
+ void focusOutEvent(QFocusEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseDoubleClickEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void timerEvent(QTimerEvent *event) override;
virtual void checkStateSet();
virtual void nextCheckState();
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickabstractbutton_p_p.h b/src/templates/qquickabstractbutton_p_p.h
index cdc77f19..a26785ae 100644
--- a/src/templates/qquickabstractbutton_p_p.h
+++ b/src/templates/qquickabstractbutton_p_p.h
@@ -48,8 +48,8 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
QT_BEGIN_NAMESPACE
@@ -91,7 +91,6 @@ public:
int repeatTimer;
QPointF pressPoint;
Qt::MouseButton repeatButton;
- QQuickItem *label;
QQuickItem *indicator;
QQuickButtonGroup *group;
};
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp
index 00ca38fb..1cc21d74 100644
--- a/src/templates/qquickapplicationwindow.cpp
+++ b/src/templates/qquickapplicationwindow.cpp
@@ -36,9 +36,12 @@
#include "qquickapplicationwindow_p.h"
#include "qquickoverlay_p.h"
+#include "qquickpopup_p.h"
#include "qquickcontrol_p_p.h"
#include "qquicktextarea_p.h"
#include "qquicktextfield_p.h"
+#include "qquicktoolbar_p.h"
+#include "qquicktabbar_p.h"
#include <QtCore/private/qobject_p.h>
#include <QtQuick/private/qquickitem_p.h>
@@ -57,7 +60,11 @@ QT_BEGIN_NAMESPACE
ApplicationWindow is a \l Window which makes it convenient to add
a \l header and \l footer item to the window.
- \image qtlabscontrols-applicationwindow-wireframe.png
+ You can declare ApplicationWindow as the root item of your application,
+ and run it by using \l QQmlApplicationEngine. In this way you can control
+ the window's properties, appearance and layout from QML.
+
+ \image qtquickcontrols-applicationwindow-wireframe.png
\qml
import Qt.labs.controls 1.0
@@ -97,19 +104,20 @@ class QQuickApplicationWindowPrivate : public QQuickItemChangeListener
public:
QQuickApplicationWindowPrivate()
: complete(false)
- , contentItem(Q_NULLPTR)
- , header(Q_NULLPTR)
- , footer(Q_NULLPTR)
- , overlay(Q_NULLPTR)
- , activeFocusControl(Q_NULLPTR)
+ , background(nullptr)
+ , contentItem(nullptr)
+ , header(nullptr)
+ , footer(nullptr)
+ , overlay(nullptr)
+ , activeFocusControl(nullptr)
{ }
void relayout();
- void itemImplicitWidthChanged(QQuickItem *item) Q_DECL_OVERRIDE;
- void itemImplicitHeightChanged(QQuickItem *item) Q_DECL_OVERRIDE;
+ void itemImplicitWidthChanged(QQuickItem *item) override;
+ void itemImplicitHeightChanged(QQuickItem *item) override;
- void updateFont(const QFont &);
+ void updateFont(const QFont &f);
inline void setFont_helper(const QFont &f) {
if (font.resolve() == f.resolve() && font == f)
return;
@@ -121,6 +129,7 @@ public:
void setActiveFocusControl(QQuickItem *item);
bool complete;
+ QQuickItem *background;
QQuickItem *contentItem;
QQuickItem *header;
QQuickItem *footer;
@@ -165,6 +174,18 @@ void QQuickApplicationWindowPrivate::relayout()
p->widthValid = false;
}
}
+
+ if (background) {
+ QQuickItemPrivate *p = QQuickItemPrivate::get(background);
+ if (!p->widthValid && qFuzzyIsNull(background->x())) {
+ background->setWidth(q->width());
+ p->widthValid = false;
+ }
+ if (!p->heightValid && qFuzzyIsNull(background->y())) {
+ background->setHeight(q->height());
+ p->heightValid = false;
+ }
+ }
}
void QQuickApplicationWindowPrivate::itemImplicitWidthChanged(QQuickItem *item)
@@ -229,11 +250,50 @@ QQuickApplicationWindow::~QQuickApplicationWindow()
}
/*!
+ \qmlproperty Item Qt.labs.controls::ApplicationWindow::background
+
+ This property holds the background item.
+
+ The background item is stacked under the \l {contentItem}{content item},
+ but above the \l {Window::color}{background color} of the window.
+
+ \note If the background item has no explicit size specified, it automatically
+ follows the control's size. In most cases, there is no need to specify
+ width or height for a background item.
+*/
+QQuickItem *QQuickApplicationWindow::background() const
+{
+ Q_D(const QQuickApplicationWindow);
+ return d->background;
+}
+
+void QQuickApplicationWindow::setBackground(QQuickItem *background)
+{
+ Q_D(QQuickApplicationWindow);
+ if (d->background == background)
+ return;
+
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setParentItem(QQuickWindow::contentItem());
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
+ if (isComponentComplete())
+ d->relayout();
+ }
+ emit backgroundChanged();
+}
+
+/*!
\qmlproperty Item Qt.labs.controls::ApplicationWindow::header
This property holds the window header item. The header item is positioned to
the top, and resized to the width of the window. The default value is \c null.
+ \note Assigning a ToolBar or TabBar as a window header sets the respective
+ \l ToolBar::position or \l TabBar::position property automatically to \c Header.
+
\sa footer, Page::header
*/
QQuickItem *QQuickApplicationWindow::header() const
@@ -245,23 +305,28 @@ QQuickItem *QQuickApplicationWindow::header() const
void QQuickApplicationWindow::setHeader(QQuickItem *header)
{
Q_D(QQuickApplicationWindow);
- if (d->header != header) {
- if (d->header) {
- QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- d->header->setParentItem(Q_NULLPTR);
- }
- d->header = header;
- if (header) {
- header->setParentItem(contentItem());
- QQuickItemPrivate *p = QQuickItemPrivate::get(header);
- p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- if (qFuzzyIsNull(header->z()))
- header->setZ(1);
- if (isComponentComplete())
- d->relayout();
- }
- emit headerChanged();
+ if (d->header == header)
+ return;
+
+ if (d->header) {
+ QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ d->header->setParentItem(nullptr);
}
+ d->header = header;
+ if (header) {
+ header->setParentItem(contentItem());
+ QQuickItemPrivate *p = QQuickItemPrivate::get(header);
+ p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ if (qFuzzyIsNull(header->z()))
+ header->setZ(1);
+ if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(header))
+ toolBar->setPosition(QQuickToolBar::Header);
+ else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(header))
+ tabBar->setPosition(QQuickTabBar::Header);
+ if (isComponentComplete())
+ d->relayout();
+ }
+ emit headerChanged();
}
/*!
@@ -270,6 +335,9 @@ void QQuickApplicationWindow::setHeader(QQuickItem *header)
This property holds the window footer item. The footer item is positioned to
the bottom, and resized to the width of the window. The default value is \c null.
+ \note Assigning a ToolBar or TabBar as a window footer sets the respective
+ \l ToolBar::position or \l TabBar::position property automatically to \c Footer.
+
\sa header, Page::footer
*/
QQuickItem *QQuickApplicationWindow::footer() const
@@ -281,23 +349,28 @@ QQuickItem *QQuickApplicationWindow::footer() const
void QQuickApplicationWindow::setFooter(QQuickItem *footer)
{
Q_D(QQuickApplicationWindow);
- if (d->footer != footer) {
- if (d->footer) {
- QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- d->footer->setParentItem(Q_NULLPTR);
- }
- d->footer = footer;
- if (footer) {
- footer->setParentItem(contentItem());
- QQuickItemPrivate *p = QQuickItemPrivate::get(footer);
- p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- if (qFuzzyIsNull(footer->z()))
- footer->setZ(1);
- if (isComponentComplete())
- d->relayout();
- }
- emit footerChanged();
+ if (d->footer == footer)
+ return;
+
+ if (d->footer) {
+ QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ d->footer->setParentItem(nullptr);
}
+ d->footer = footer;
+ if (footer) {
+ footer->setParentItem(contentItem());
+ QQuickItemPrivate *p = QQuickItemPrivate::get(footer);
+ p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ if (qFuzzyIsNull(footer->z()))
+ footer->setZ(1);
+ if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(footer))
+ toolBar->setPosition(QQuickToolBar::Footer);
+ else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(footer))
+ tabBar->setPosition(QQuickTabBar::Footer);
+ if (isComponentComplete())
+ d->relayout();
+ }
+ emit footerChanged();
}
/*!
@@ -393,13 +466,13 @@ QFont QQuickApplicationWindow::font() const
return d->font;
}
-void QQuickApplicationWindow::setFont(const QFont &f)
+void QQuickApplicationWindow::setFont(const QFont &font)
{
Q_D(QQuickApplicationWindow);
- if (d->font.resolve() == f.resolve() && d->font == f)
+ if (d->font.resolve() == font.resolve() && d->font == font)
return;
- QFont resolvedFont = f.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont));
+ QFont resolvedFont = font.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont));
d->setFont_helper(resolvedFont);
}
@@ -422,6 +495,11 @@ void QQuickApplicationWindowPrivate::updateFont(const QFont &f)
QQuickControlPrivate::updateFontRecur(q->QQuickWindow::contentItem(), f);
+ // TODO: internal QQuickPopupManager that provides reliable access to all QQuickPopup instances
+ const QList<QQuickPopup *> popups = q->findChildren<QQuickPopup *>();
+ for (QQuickPopup *popup : popups)
+ QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->inheritFont(f);
+
if (changed)
emit q->fontChanged();
}
@@ -440,6 +518,12 @@ void QQuickApplicationWindow::setLocale(const QLocale &locale)
d->locale = locale;
QQuickControlPrivate::updateLocaleRecur(QQuickWindow::contentItem(), locale);
+
+ // TODO: internal QQuickPopupManager that provides reliable access to all QQuickPopup instances
+ const QList<QQuickPopup *> popups = QQuickWindow::contentItem()->findChildren<QQuickPopup *>();
+ for (QQuickPopup *popup : popups)
+ QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->updateLocale(locale, false); // explicit=false
+
emit localeChanged();
}
@@ -485,7 +569,7 @@ class QQuickApplicationWindowAttachedPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QQuickApplicationWindowAttached)
public:
- QQuickApplicationWindowAttachedPrivate() : window(Q_NULLPTR) { }
+ QQuickApplicationWindowAttachedPrivate() : window(nullptr) { }
void windowChange(QQuickWindow *wnd);
@@ -533,10 +617,12 @@ QQuickApplicationWindowAttached::QQuickApplicationWindowAttached(QObject *parent
: QObject(*(new QQuickApplicationWindowAttachedPrivate), parent)
{
Q_D(QQuickApplicationWindowAttached);
- QQuickItem *item = qobject_cast<QQuickItem *>(parent);
- if (item) {
+ if (QQuickItem *item = qobject_cast<QQuickItem *>(parent)) {
d->windowChange(item->window());
QObjectPrivate::connect(item, &QQuickItem::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange);
+ } else if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent)) {
+ d->windowChange(popup->window());
+ QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange);
}
}
@@ -563,7 +649,7 @@ QQuickApplicationWindow *QQuickApplicationWindowAttached::window() const
QQuickItem *QQuickApplicationWindowAttached::contentItem() const
{
Q_D(const QQuickApplicationWindowAttached);
- return d->window ? d->window->contentItem() : Q_NULLPTR;
+ return d->window ? d->window->contentItem() : nullptr;
}
/*!
@@ -580,7 +666,7 @@ QQuickItem *QQuickApplicationWindowAttached::contentItem() const
QQuickItem *QQuickApplicationWindowAttached::activeFocusControl() const
{
Q_D(const QQuickApplicationWindowAttached);
- return d->window ? d->window->activeFocusControl() : Q_NULLPTR;
+ return d->window ? d->window->activeFocusControl() : nullptr;
}
/*!
@@ -594,7 +680,7 @@ QQuickItem *QQuickApplicationWindowAttached::activeFocusControl() const
QQuickItem *QQuickApplicationWindowAttached::header() const
{
Q_D(const QQuickApplicationWindowAttached);
- return d->window ? d->window->header() : Q_NULLPTR;
+ return d->window ? d->window->header() : nullptr;
}
/*!
@@ -608,7 +694,7 @@ QQuickItem *QQuickApplicationWindowAttached::header() const
QQuickItem *QQuickApplicationWindowAttached::footer() const
{
Q_D(const QQuickApplicationWindowAttached);
- return d->window ? d->window->footer() : Q_NULLPTR;
+ return d->window ? d->window->footer() : nullptr;
}
/*!
@@ -621,7 +707,7 @@ QQuickItem *QQuickApplicationWindowAttached::footer() const
QQuickOverlay *QQuickApplicationWindowAttached::overlay() const
{
Q_D(const QQuickApplicationWindowAttached);
- return d->window ? d->window->overlay() : Q_NULLPTR;
+ return d->window ? d->window->overlay() : nullptr;
}
QT_END_NAMESPACE
diff --git a/src/templates/qquickapplicationwindow_p.h b/src/templates/qquickapplicationwindow_p.h
index f62ddee3..1a0b82ec 100644
--- a/src/templates/qquickapplicationwindow_p.h
+++ b/src/templates/qquickapplicationwindow_p.h
@@ -49,7 +49,7 @@
//
#include <QtQuick/private/qquickwindowmodule_p.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
#include <QtGui/qfont.h>
#include <QtCore/qlocale.h>
@@ -60,23 +60,27 @@ class QQuickApplicationWindowPrivate;
class QQuickApplicationWindowAttached;
class QQuickApplicationWindowAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickApplicationWindow : public QQuickWindowQmlImpl
+class Q_QUICKTEMPLATES_EXPORT QQuickApplicationWindow : public QQuickWindowQmlImpl
{
Q_OBJECT
+ Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
Q_PROPERTY(QQuickItem *contentItem READ contentItem CONSTANT FINAL)
Q_PROPERTY(QQmlListProperty<QObject> data READ contentData FINAL)
Q_PROPERTY(QQuickItem *activeFocusControl READ activeFocusControl NOTIFY activeFocusControlChanged FINAL)
Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL)
Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL)
Q_PROPERTY(QQuickOverlay *overlay READ overlay CONSTANT FINAL)
- Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged)
+ Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL)
Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL)
Q_CLASSINFO("DefaultProperty", "data")
public:
- explicit QQuickApplicationWindow(QWindow *parent = Q_NULLPTR);
+ explicit QQuickApplicationWindow(QWindow *parent = nullptr);
~QQuickApplicationWindow();
+ QQuickItem *background() const;
+ void setBackground(QQuickItem *background);
+
QQuickItem *contentItem() const;
QQmlListProperty<QObject> contentData();
@@ -91,7 +95,7 @@ public:
QQuickOverlay *overlay() const;
QFont font() const;
- void setFont(const QFont &);
+ void setFont(const QFont &font);
void resetFont();
QLocale locale() const;
@@ -101,6 +105,7 @@ public:
static QQuickApplicationWindowAttached *qmlAttachedProperties(QObject *object);
Q_SIGNALS:
+ void backgroundChanged();
void activeFocusControlChanged();
void headerChanged();
void footerChanged();
@@ -109,9 +114,9 @@ Q_SIGNALS:
protected:
bool isComponentComplete() const;
- void classBegin() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
- void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
+ void classBegin() override;
+ void componentComplete() override;
+ void resizeEvent(QResizeEvent *event) override;
private:
Q_DISABLE_COPY(QQuickApplicationWindow)
@@ -120,7 +125,7 @@ private:
QScopedPointer<QQuickApplicationWindowPrivate> d_ptr;
};
-class Q_LABSTEMPLATES_EXPORT QQuickApplicationWindowAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickApplicationWindowAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickApplicationWindow *window READ window NOTIFY windowChanged FINAL)
@@ -131,7 +136,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickApplicationWindowAttached : public QObject
Q_PROPERTY(QQuickOverlay *overlay READ overlay NOTIFY overlayChanged FINAL)
public:
- explicit QQuickApplicationWindowAttached(QObject *parent = Q_NULLPTR);
+ explicit QQuickApplicationWindowAttached(QObject *parent = nullptr);
QQuickApplicationWindow *window() const;
QQuickItem *contentItem() const;
diff --git a/src/templates/qquickbusyindicator.cpp b/src/templates/qquickbusyindicator.cpp
index 381ac5c7..a4bfba88 100644
--- a/src/templates/qquickbusyindicator.cpp
+++ b/src/templates/qquickbusyindicator.cpp
@@ -45,9 +45,9 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickBusyIndicator
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-indicators
- \brief A busy indicator.
+ \brief Indicates activity while content is being loaded.
- \image qtlabscontrols-busyindicator.gif
+ \image qtquickcontrols-busyindicator.gif
The busy indicator should be used to indicate activity while content is
being loaded or the UI is blocked waiting for a resource to become available.
@@ -98,10 +98,11 @@ bool QQuickBusyIndicator::isRunning() const
void QQuickBusyIndicator::setRunning(bool running)
{
Q_D(QQuickBusyIndicator);
- if (d->running != running) {
- d->running = running;
- emit runningChanged();
- }
+ if (d->running == running)
+ return;
+
+ d->running = running;
+ emit runningChanged();
}
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/templates/qquickbusyindicator_p.h b/src/templates/qquickbusyindicator_p.h
index 8be19d5c..a7198639 100644
--- a/src/templates/qquickbusyindicator_p.h
+++ b/src/templates/qquickbusyindicator_p.h
@@ -48,19 +48,19 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickBusyIndicatorPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickBusyIndicator : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickBusyIndicator : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged FINAL)
public:
- explicit QQuickBusyIndicator(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickBusyIndicator(QQuickItem *parent = nullptr);
bool isRunning() const;
void setRunning(bool running);
@@ -70,7 +70,7 @@ Q_SIGNALS:
protected:
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickbutton.cpp b/src/templates/qquickbutton.cpp
index 1e40ec05..75bffa2c 100644
--- a/src/templates/qquickbutton.cpp
+++ b/src/templates/qquickbutton.cpp
@@ -47,9 +47,9 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickButton
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-buttons
- \brief A button control.
+ \brief A push-button control that can be clicked by the user.
- \image qtlabscontrols-button.gif
+ \image qtquickcontrols-button.gif
Button presents a push-button control that can be pushed or clicked by
the user. Buttons are normally used to perform an action, or to answer
@@ -57,16 +57,23 @@ QT_BEGIN_NAMESPACE
\e Yes, \e No, and \e Help.
\table
- \row \li \image qtlabscontrols-button-normal.png
+ \row \li \image qtquickcontrols-button-normal.png
\li A button in its normal state.
- \row \li \image qtlabscontrols-button-pressed.png
+ \row \li \image qtquickcontrols-button-pressed.png
\li A button that is pressed.
- \row \li \image qtlabscontrols-button-focused.png
+ \row \li \image qtquickcontrols-button-focused.png
\li A button that has active focus.
- \row \li \image qtlabscontrols-button-disabled.png
+ \row \li \image qtquickcontrols-button-disabled.png
\li A button that is disabled.
\endtable
+ A button emits the signal \l {AbstractButton::}{clicked()} when it is activated by the user.
+ Connect to this signal to perform the button's action. Buttons also
+ provide the signals \l {AbstractButton::}{canceled()}, \l {AbstractButton::}{doubleClicked()}, \l {AbstractButton::}{pressed()},
+ \l {AbstractButton::}{released()} and \l {AbstractButton::}{pressAndHold()} for long presses.
+
+ See the snippet below on how to connect to the button's signals.
+
\code
RowLayout {
Button {
diff --git a/src/templates/qquickbutton_p.h b/src/templates/qquickbutton_p.h
index 83d22fb8..cfdf1044 100644
--- a/src/templates/qquickbutton_p.h
+++ b/src/templates/qquickbutton_p.h
@@ -48,19 +48,19 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
-class Q_LABSTEMPLATES_EXPORT QQuickButton : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickButton : public QQuickAbstractButton
{
Q_OBJECT
public:
- explicit QQuickButton(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickButton(QQuickItem *parent = nullptr);
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
};
QT_END_NAMESPACE
diff --git a/src/templates/qquickbuttongroup.cpp b/src/templates/qquickbuttongroup.cpp
index 0865277e..be8c4c32 100644
--- a/src/templates/qquickbuttongroup.cpp
+++ b/src/templates/qquickbuttongroup.cpp
@@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickButtonGroup
\inqmlmodule Qt.labs.controls
\ingroup utilities
- \brief An exclusive group of checkable controls.
+ \brief A mutually-exclusive group of checkable controls.
ButtonGroup is a non-visual, mutually exclusive group of buttons.
It is used with controls such as RadioButton, where only one of the options
@@ -116,8 +116,8 @@ QT_BEGIN_NAMESPACE
}
\endcode
- More advanced use cases can be handled using the addButton() and
- removeButton() methods.
+ More advanced use cases can be handled using the \c addButton() and
+ \c removeButton() methods.
\labs
@@ -129,7 +129,7 @@ class QQuickButtonGroupPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QQuickButtonGroup)
public:
- QQuickButtonGroupPrivate() : checkedButton(Q_NULLPTR) { }
+ QQuickButtonGroupPrivate() : checkedButton(nullptr) { }
void clear();
void updateCurrent();
@@ -145,8 +145,8 @@ public:
void QQuickButtonGroupPrivate::clear()
{
- foreach (QQuickAbstractButton *button, buttons) {
- QQuickAbstractButtonPrivate::get(button)->group = Q_NULLPTR;
+ for (QQuickAbstractButton *button : qAsConst(buttons)) {
+ QQuickAbstractButtonPrivate::get(button)->group = nullptr;
QObjectPrivate::disconnect(button, &QQuickAbstractButton::checkedChanged, this, &QQuickButtonGroupPrivate::updateCurrent);
}
buttons.clear();
@@ -184,7 +184,7 @@ void QQuickButtonGroupPrivate::buttons_clear(QQmlListProperty<QQuickAbstractButt
if (!p->buttons.isEmpty()) {
p->clear();
QQuickButtonGroup *q = static_cast<QQuickButtonGroup *>(prop->object);
- q->setCheckedButton(Q_NULLPTR);
+ q->setCheckedButton(nullptr);
emit q->buttonsChanged();
}
}
@@ -221,14 +221,15 @@ QQuickAbstractButton *QQuickButtonGroup::checkedButton() const
void QQuickButtonGroup::setCheckedButton(QQuickAbstractButton *checkedButton)
{
Q_D(QQuickButtonGroup);
- if (d->checkedButton != checkedButton) {
- if (d->checkedButton)
- d->checkedButton->setChecked(false);
- d->checkedButton = checkedButton;
- if (checkedButton)
- checkedButton->setChecked(true);
- emit checkedButtonChanged();
- }
+ if (d->checkedButton == checkedButton)
+ return;
+
+ if (d->checkedButton)
+ d->checkedButton->setChecked(false);
+ d->checkedButton = checkedButton;
+ if (checkedButton)
+ checkedButton->setChecked(true);
+ emit checkedButtonChanged();
}
/*!
@@ -312,11 +313,11 @@ void QQuickButtonGroup::removeButton(QQuickAbstractButton *button)
if (!button || !d->buttons.contains(button))
return;
- QQuickAbstractButtonPrivate::get(button)->group = Q_NULLPTR;
+ QQuickAbstractButtonPrivate::get(button)->group = nullptr;
QObjectPrivate::disconnect(button, &QQuickAbstractButton::checkedChanged, d, &QQuickButtonGroupPrivate::updateCurrent);
if (d->checkedButton == button)
- setCheckedButton(Q_NULLPTR);
+ setCheckedButton(nullptr);
d->buttons.removeOne(button);
emit buttonsChanged();
@@ -325,7 +326,7 @@ void QQuickButtonGroup::removeButton(QQuickAbstractButton *button)
class QQuickButtonGroupAttachedPrivate : public QObjectPrivate
{
public:
- QQuickButtonGroupAttachedPrivate() : group(Q_NULLPTR) { }
+ QQuickButtonGroupAttachedPrivate() : group(nullptr) { }
QQuickButtonGroup *group;
};
@@ -366,14 +367,15 @@ QQuickButtonGroup *QQuickButtonGroupAttached::group() const
void QQuickButtonGroupAttached::setGroup(QQuickButtonGroup *group)
{
Q_D(QQuickButtonGroupAttached);
- if (d->group != group) {
- if (d->group)
- d->group->removeButton(qobject_cast<QQuickAbstractButton*>(parent()));
- d->group = group;
- if (group)
- group->addButton(qobject_cast<QQuickAbstractButton*>(parent()));
- emit groupChanged();
- }
+ if (d->group == group)
+ return;
+
+ if (d->group)
+ d->group->removeButton(qobject_cast<QQuickAbstractButton*>(parent()));
+ d->group = group;
+ if (group)
+ group->addButton(qobject_cast<QQuickAbstractButton*>(parent()));
+ emit groupChanged();
}
QT_END_NAMESPACE
diff --git a/src/templates/qquickbuttongroup_p.h b/src/templates/qquickbuttongroup_p.h
index 6210079d..4c0d6fef 100644
--- a/src/templates/qquickbuttongroup_p.h
+++ b/src/templates/qquickbuttongroup_p.h
@@ -49,7 +49,7 @@
//
#include <QtCore/qobject.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
#include <QtQml/qqml.h>
QT_BEGIN_NAMESPACE
@@ -59,14 +59,14 @@ class QQuickButtonGroupPrivate;
class QQuickButtonGroupAttached;
class QQuickButtonGroupAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickButtonGroup : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickButtonGroup : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickAbstractButton *checkedButton READ checkedButton WRITE setCheckedButton NOTIFY checkedButtonChanged)
Q_PROPERTY(QQmlListProperty<QQuickAbstractButton> buttons READ buttons NOTIFY buttonsChanged FINAL)
public:
- explicit QQuickButtonGroup(QObject *parent = Q_NULLPTR);
+ explicit QQuickButtonGroup(QObject *parent = nullptr);
~QQuickButtonGroup();
static QQuickButtonGroupAttached *qmlAttachedProperties(QObject *object);
@@ -89,13 +89,13 @@ private:
Q_DECLARE_PRIVATE(QQuickButtonGroup)
};
-class Q_LABSTEMPLATES_EXPORT QQuickButtonGroupAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickButtonGroupAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickButtonGroup *group READ group WRITE setGroup NOTIFY groupChanged FINAL)
public:
- explicit QQuickButtonGroupAttached(QObject *parent = Q_NULLPTR);
+ explicit QQuickButtonGroupAttached(QObject *parent = nullptr);
QQuickButtonGroup *group() const;
void setGroup(QQuickButtonGroup *group);
diff --git a/src/templates/qquickcheckbox.cpp b/src/templates/qquickcheckbox.cpp
index 644e151e..6d2fb3d0 100644
--- a/src/templates/qquickcheckbox.cpp
+++ b/src/templates/qquickcheckbox.cpp
@@ -47,20 +47,29 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickCheckBox
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-buttons
- \brief A check box control.
+ \brief An option button that can be checked or unchecked.
CheckBox presents an option button that can be toggled on (checked) or
off (unchecked). Check boxes are typically used to select one or more
options from a set of options.
+ The state of the checkbox can be set with the \l {AbstractButton::}{checked} property.
+
+ In addition to the checked and unchecked states, there is a third state:
+ partially checked. The partially checked state can be enabled using the
+ \l tristate property. This state indicates that the regular checked/unchecked
+ state can not be determined; generally because of other states that affect
+ the checkbox. This state is useful when several child nodes are selected
+ in a treeview, for example.
+
\table
- \row \li \image qtlabscontrols-checkbox-normal.png
+ \row \li \image qtquickcontrols-checkbox-normal.png
\li A check box in its normal state.
- \row \li \image qtlabscontrols-checkbox-checked.png
+ \row \li \image qtquickcontrols-checkbox-checked.png
\li A check box that is checked.
- \row \li \image qtlabscontrols-checkbox-focused.png
+ \row \li \image qtquickcontrols-checkbox-focused.png
\li A check box that has active focus.
- \row \li \image qtlabscontrols-checkbox-disabled.png
+ \row \li \image qtquickcontrols-checkbox-disabled.png
\li A check box that is disabled.
\endtable
@@ -121,10 +130,11 @@ bool QQuickCheckBox::isTristate() const
void QQuickCheckBox::setTristate(bool tristate)
{
Q_D(QQuickCheckBox);
- if (d->tristate != tristate) {
- d->tristate = tristate;
- emit tristateChanged();
- }
+ if (d->tristate == tristate)
+ return;
+
+ d->tristate = tristate;
+ emit tristateChanged();
}
/*!
@@ -148,16 +158,18 @@ Qt::CheckState QQuickCheckBox::checkState() const
void QQuickCheckBox::setCheckState(Qt::CheckState state)
{
Q_D(QQuickCheckBox);
+ if (d->checkState == state)
+ return;
+
if (!d->tristate && state == Qt::PartiallyChecked)
setTristate(true);
- if (d->checkState != state) {
- bool wasChecked = isChecked();
- d->checked = state != Qt::Unchecked;
- d->checkState = state;
- emit checkStateChanged();
- if (d->checked != wasChecked)
- emit checkedChanged();
- }
+
+ bool wasChecked = isChecked();
+ d->checked = state != Qt::Unchecked;
+ d->checkState = state;
+ emit checkStateChanged();
+ if (d->checked != wasChecked)
+ emit checkedChanged();
}
QFont QQuickCheckBox::defaultFont() const
diff --git a/src/templates/qquickcheckbox_p.h b/src/templates/qquickcheckbox_p.h
index 4c0d505f..c2b3d6b6 100644
--- a/src/templates/qquickcheckbox_p.h
+++ b/src/templates/qquickcheckbox_p.h
@@ -48,20 +48,20 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
class QQuickCheckBoxPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickCheckBox : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickCheckBox : public QQuickAbstractButton
{
Q_OBJECT
Q_PROPERTY(bool tristate READ isTristate WRITE setTristate NOTIFY tristateChanged FINAL)
Q_PROPERTY(Qt::CheckState checkState READ checkState WRITE setCheckState NOTIFY checkStateChanged FINAL)
public:
- explicit QQuickCheckBox(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickCheckBox(QQuickItem *parent = nullptr);
bool isTristate() const;
void setTristate(bool tristate);
@@ -74,13 +74,13 @@ Q_SIGNALS:
void checkStateChanged();
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
- void checkStateSet() Q_DECL_OVERRIDE;
- void nextCheckState() Q_DECL_OVERRIDE;
+ void checkStateSet() override;
+ void nextCheckState() override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickcombobox.cpp b/src/templates/qquickcombobox.cpp
index e37b0f52..109d03b7 100644
--- a/src/templates/qquickcombobox.cpp
+++ b/src/templates/qquickcombobox.cpp
@@ -54,9 +54,9 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickComboBox
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-input
- \brief A combo box control.
+ \brief A combined button and popup list taking minimal space.
- \image qtlabscontrols-combobox.png
+ \image qtquickcontrols-combobox.png
ComboBox is a combined button and popup list. It provides a means of
presenting a list of options to the user in a way that takes up the
@@ -123,7 +123,7 @@ class QQuickComboBoxDelegateModel : public QQmlDelegateModel
{
public:
explicit QQuickComboBoxDelegateModel(QQuickComboBox *combo);
- QString stringValue(int index, const QString &role) Q_DECL_OVERRIDE;
+ QString stringValue(int index, const QString &role) override;
private:
QQuickComboBox *combo;
@@ -140,7 +140,7 @@ QString QQuickComboBoxDelegateModel::stringValue(int index, const QString &role)
if (model.userType() == QMetaType::QVariantList) {
QVariant object = model.toList().value(index);
if (object.userType() == QMetaType::QVariantMap) {
- QVariantMap data = object.toMap();
+ const QVariantMap data = object.toMap();
if (data.count() == 1 && role == QLatin1String("modelData"))
return data.first().toString();
return data.value(role).toString();
@@ -155,8 +155,8 @@ class QQuickComboBoxPrivate : public QQuickControlPrivate
public:
QQuickComboBoxPrivate() : pressed(false), ownModel(false), hasDisplayText(false),
- highlightedIndex(-1), currentIndex(-1), delegateModel(Q_NULLPTR),
- delegate(Q_NULLPTR), popup(Q_NULLPTR) { }
+ highlightedIndex(-1), currentIndex(-1), delegateModel(nullptr),
+ delegate(nullptr), popup(nullptr) { }
bool isPopupVisible() const;
void showPopup();
@@ -227,7 +227,7 @@ void QQuickComboBoxPrivate::togglePopup(bool accept)
void QQuickComboBoxPrivate::itemClicked()
{
Q_Q(QQuickComboBox);
- int index = delegateModel->indexOf(q->sender(), Q_NULLPTR);
+ int index = delegateModel->indexOf(q->sender(), nullptr);
if (index != -1) {
setHighlightedIndex(index);
emit q->highlighted(index);
@@ -302,10 +302,11 @@ void QQuickComboBoxPrivate::decrease()
void QQuickComboBoxPrivate::setHighlightedIndex(int index)
{
Q_Q(QQuickComboBox);
- if (highlightedIndex != index) {
- highlightedIndex = index;
- emit q->highlightedIndexChanged();
- }
+ if (highlightedIndex == index)
+ return;
+
+ highlightedIndex = index;
+ emit q->highlightedIndexChanged();
}
void QQuickComboBoxPrivate::createDelegateModel()
@@ -348,7 +349,7 @@ void QQuickComboBoxPrivate::createDelegateModel()
QQuickComboBox::QQuickComboBox(QQuickItem *parent) :
QQuickControl(*(new QQuickComboBoxPrivate), parent)
{
- setActiveFocusOnTab(true);
+ setFocusPolicy(Qt::StrongFocus);
setFlag(QQuickItem::ItemIsFocusScope);
setAcceptedMouseButtons(Qt::LeftButton);
}
@@ -357,7 +358,7 @@ QQuickComboBox::~QQuickComboBox()
{
Q_D(QQuickComboBox);
delete d->popup;
- d->popup = Q_NULLPTR;
+ d->popup = nullptr;
}
/*!
@@ -403,15 +404,16 @@ void QQuickComboBox::setModel(const QVariant& m)
if (model.userType() == qMetaTypeId<QJSValue>())
model = model.value<QJSValue>().toVariant();
- if (d->model != model) {
- d->model = model;
- d->createDelegateModel();
- if (isComponentComplete()) {
- setCurrentIndex(count() > 0 ? 0 : -1);
- d->updateCurrentText();
- }
- emit modelChanged();
+ if (d->model == model)
+ return;
+
+ d->model = model;
+ d->createDelegateModel();
+ if (isComponentComplete()) {
+ setCurrentIndex(count() > 0 ? 0 : -1);
+ d->updateCurrentText();
}
+ emit modelChanged();
}
/*!
@@ -440,10 +442,11 @@ bool QQuickComboBox::isPressed() const
void QQuickComboBox::setPressed(bool pressed)
{
Q_D(QQuickComboBox);
- if (d->pressed != pressed) {
- d->pressed = pressed;
- emit pressedChanged();
- }
+ if (d->pressed == pressed)
+ return;
+
+ d->pressed = pressed;
+ emit pressedChanged();
}
/*!
@@ -476,12 +479,13 @@ int QQuickComboBox::currentIndex() const
void QQuickComboBox::setCurrentIndex(int index)
{
Q_D(QQuickComboBox);
- if (d->currentIndex != index) {
- d->currentIndex = index;
- emit currentIndexChanged();
- if (isComponentComplete())
- d->updateCurrentText();
- }
+ if (d->currentIndex == index)
+ return;
+
+ d->currentIndex = index;
+ emit currentIndexChanged();
+ if (isComponentComplete())
+ d->updateCurrentText();
}
/*!
@@ -527,19 +531,21 @@ void QQuickComboBox::setDisplayText(const QString &text)
{
Q_D(QQuickComboBox);
d->hasDisplayText = true;
- if (d->displayText != text) {
- d->displayText = text;
- emit displayTextChanged();
- }
+ if (d->displayText == text)
+ return;
+
+ d->displayText = text;
+ emit displayTextChanged();
}
void QQuickComboBox::resetDisplayText()
{
Q_D(QQuickComboBox);
- if (d->hasDisplayText) {
- d->hasDisplayText = false;
- d->updateCurrentText();
- }
+ if (!d->hasDisplayText)
+ return;
+
+ d->hasDisplayText = false;
+ d->updateCurrentText();
}
/*!
@@ -558,12 +564,13 @@ QString QQuickComboBox::textRole() const
void QQuickComboBox::setTextRole(const QString &role)
{
Q_D(QQuickComboBox);
- if (d->textRole != role) {
- d->textRole = role;
- if (isComponentComplete())
- d->updateCurrentText();
- emit textRoleChanged();
- }
+ if (d->textRole == role)
+ return;
+
+ d->textRole = role;
+ if (isComponentComplete())
+ d->updateCurrentText();
+ emit textRoleChanged();
}
/*!
@@ -582,14 +589,15 @@ QQmlComponent *QQuickComboBox::delegate() const
void QQuickComboBox::setDelegate(QQmlComponent* delegate)
{
Q_D(QQuickComboBox);
- if (d->delegate != delegate) {
- delete d->delegate;
- d->delegate = delegate;
- QQmlDelegateModel *delegateModel = qobject_cast<QQmlDelegateModel*>(d->delegateModel);
- if (delegateModel)
- delegateModel->setDelegate(d->delegate);
- emit delegateChanged();
- }
+ if (d->delegate == delegate)
+ return;
+
+ delete d->delegate;
+ d->delegate = delegate;
+ QQmlDelegateModel *delegateModel = qobject_cast<QQmlDelegateModel*>(d->delegateModel);
+ if (delegateModel)
+ delegateModel->setDelegate(d->delegate);
+ emit delegateChanged();
}
/*!
@@ -608,13 +616,14 @@ QQuickPopup *QQuickComboBox::popup() const
void QQuickComboBox::setPopup(QQuickPopup *popup)
{
Q_D(QQuickComboBox);
- if (d->popup != popup) {
- delete d->popup;
- if (popup)
- popup->setClosePolicy(QQuickPopup::OnEscape | QQuickPopup::OnPressOutsideParent);
- d->popup = popup;
- emit popupChanged();
- }
+ if (d->popup == popup)
+ return;
+
+ delete d->popup;
+ if (popup)
+ popup->setClosePolicy(QQuickPopup::OnEscape | QQuickPopup::OnPressOutsideParent);
+ d->popup = popup;
+ emit popupChanged();
}
/*!
@@ -696,6 +705,34 @@ int QQuickComboBox::find(const QString &text, Qt::MatchFlags flags) const
return -1;
}
+/*!
+ \qmlmethod void Qt.labs.controls::ComboBox::increase()
+
+ Increases the current index of the combo box, or the highlighted
+ index if the popup list when it is visible.
+
+ \sa currentIndex, highlightedIndex
+*/
+void QQuickComboBox::increase()
+{
+ Q_D(QQuickComboBox);
+ d->increase();
+}
+
+/*!
+ \qmlmethod void Qt.labs.controls::ComboBox::decrease()
+
+ Decreases the current index of the combo box, or the highlighted
+ index if the popup list when it is visible.
+
+ \sa currentIndex, highlightedIndex
+*/
+void QQuickComboBox::decrease()
+{
+ Q_D(QQuickComboBox);
+ d->decrease();
+}
+
void QQuickComboBox::focusOutEvent(QFocusEvent *event)
{
Q_D(QQuickComboBox);
@@ -787,8 +824,6 @@ void QQuickComboBox::mouseReleaseEvent(QMouseEvent *event)
QQuickControl::mouseReleaseEvent(event);
if (d->pressed) {
setPressed(false);
- if (!d->isPopupVisible())
- forceActiveFocus(Qt::MouseFocusReason);
d->togglePopup(false);
}
}
@@ -799,6 +834,20 @@ void QQuickComboBox::mouseUngrabEvent()
setPressed(false);
}
+void QQuickComboBox::wheelEvent(QWheelEvent *event)
+{
+ Q_D(QQuickComboBox);
+ QQuickControl::wheelEvent(event);
+ if (d->wheelEnabled && !d->isPopupVisible()) {
+ const int oldIndex = d->currentIndex;
+ if (event->angleDelta().y() > 0)
+ d->decrease();
+ else
+ d->increase();
+ event->setAccepted(d->currentIndex != oldIndex);
+ }
+}
+
void QQuickComboBox::componentComplete()
{
Q_D(QQuickComboBox);
diff --git a/src/templates/qquickcombobox_p.h b/src/templates/qquickcombobox_p.h
index 1d8f498a..b9271aed 100644
--- a/src/templates/qquickcombobox_p.h
+++ b/src/templates/qquickcombobox_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -56,7 +56,7 @@ class QQuickPopup;
class QQmlInstanceModel;
class QQuickComboBoxPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickComboBox : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickComboBox : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(int count READ count NOTIFY countChanged FINAL)
@@ -72,7 +72,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickComboBox : public QQuickControl
Q_PROPERTY(QQuickPopup *popup READ popup WRITE setPopup NOTIFY popupChanged FINAL)
public:
- explicit QQuickComboBox(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickComboBox(QQuickItem *parent = nullptr);
~QQuickComboBox();
int count() const;
@@ -107,6 +107,10 @@ public:
Q_INVOKABLE QString textAt(int index) const;
Q_INVOKABLE int find(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly) const;
+public Q_SLOTS:
+ void increase();
+ void decrease();
+
Q_SIGNALS:
void countChanged();
void modelChanged();
@@ -124,17 +128,18 @@ Q_SIGNALS:
void highlighted(int index);
protected:
- void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
-
- void componentComplete() Q_DECL_OVERRIDE;
-
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ void focusOutEvent(QFocusEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void wheelEvent(QWheelEvent *event) override;
+
+ void componentComplete() override;
+
+ QFont defaultFont() const override;
private:
Q_DISABLE_COPY(QQuickComboBox)
diff --git a/src/templates/qquickcontainer.cpp b/src/templates/qquickcontainer.cpp
index 841eae8a..fc754fbf 100644
--- a/src/templates/qquickcontainer.cpp
+++ b/src/templates/qquickcontainer.cpp
@@ -64,7 +64,7 @@ static QQuickItem *effectiveContentItem(QQuickItem *item)
return item;
}
-QQuickContainerPrivate::QQuickContainerPrivate() : contentModel(Q_NULLPTR), currentIndex(-1), updatingCurrent(false)
+QQuickContainerPrivate::QQuickContainerPrivate() : contentModel(nullptr), currentIndex(-1), updatingCurrent(false)
{
}
@@ -111,10 +111,8 @@ void QQuickContainerPrivate::insertItem(int index, QQuickItem *item)
q->itemAdded(index, item);
- if (contentModel->count() == 1 && currentIndex == -1) {
- Q_Q(QQuickContainer);
+ if (contentModel->count() == 1 && currentIndex == -1)
q->setCurrentIndex(index);
- }
updatingCurrent = false;
}
@@ -155,7 +153,7 @@ void QQuickContainerPrivate::removeItem(int index, QQuickItem *item)
}
QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Destroyed | QQuickItemPrivate::Parent);
- item->setParentItem(Q_NULLPTR);
+ item->setParentItem(nullptr);
contentModel->remove(index);
q->itemRemoved(index, item);
@@ -184,7 +182,7 @@ void QQuickContainerPrivate::itemParentChanged(QQuickItem *item, QQuickItem *par
{
// remove dynamically unparented items (eg. by a Repeater)
if (!parent)
- removeItem(contentModel->indexOf(item, Q_NULLPTR), item);
+ removeItem(contentModel->indexOf(item, nullptr), item);
}
void QQuickContainerPrivate::itemSiblingOrderChanged(QQuickItem *)
@@ -194,14 +192,14 @@ void QQuickContainerPrivate::itemSiblingOrderChanged(QQuickItem *)
QList<QQuickItem *> siblings = effectiveContentItem(contentItem)->childItems();
for (int i = 0; i < siblings.count(); ++i) {
QQuickItem* sibling = siblings.at(i);
- int index = contentModel->indexOf(sibling, Q_NULLPTR);
+ int index = contentModel->indexOf(sibling, nullptr);
q->moveItem(index, i);
}
}
void QQuickContainerPrivate::itemDestroyed(QQuickItem *item)
{
- int index = contentModel->indexOf(item, Q_NULLPTR);
+ int index = contentModel->indexOf(item, nullptr);
if (index != -1)
removeItem(index, item);
}
@@ -215,7 +213,7 @@ void QQuickContainerPrivate::contentData_append(QQmlListProperty<QObject> *prop,
if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) {
QQuickItemPrivate::get(item)->addItemChangeListener(p, QQuickItemPrivate::SiblingOrder);
item->setParentItem(effectiveContentItem(p->contentItem));
- } else if (p->contentModel->indexOf(item, Q_NULLPTR) == -1) {
+ } else if (p->contentModel->indexOf(item, nullptr) == -1) {
q->addItem(item);
}
} else {
@@ -333,7 +331,7 @@ void QQuickContainer::insertItem(int index, QQuickItem *item)
if (index < 0 || index > count)
index = count;
- int oldIndex = d->contentModel->indexOf(item, Q_NULLPTR);
+ int oldIndex = d->contentModel->indexOf(item, nullptr);
if (oldIndex != -1) {
if (oldIndex < index)
--index;
@@ -442,11 +440,12 @@ int QQuickContainer::currentIndex() const
void QQuickContainer::setCurrentIndex(int index)
{
Q_D(QQuickContainer);
- if (d->currentIndex != index) {
- d->currentIndex = index;
- emit currentIndexChanged();
- emit currentItemChanged();
- }
+ if (d->currentIndex == index)
+ return;
+
+ d->currentIndex = index;
+ emit currentIndexChanged();
+ emit currentItemChanged();
}
/*!
@@ -465,7 +464,7 @@ void QQuickContainer::itemChange(ItemChange change, const ItemChangeData &data)
Q_D(QQuickContainer);
QQuickControl::itemChange(change, data);
if (change == QQuickItem::ItemChildAddedChange && isComponentComplete() && data.item != d->background && data.item != d->contentItem) {
- if (!QQuickItemPrivate::get(data.item)->isTransparentForPositioner() && d->contentModel->indexOf(data.item, Q_NULLPTR) == -1)
+ if (!QQuickItemPrivate::get(data.item)->isTransparentForPositioner() && d->contentModel->indexOf(data.item, nullptr) == -1)
addItem(data.item);
}
}
diff --git a/src/templates/qquickcontainer_p.h b/src/templates/qquickcontainer_p.h
index 83476f66..e60c13a7 100644
--- a/src/templates/qquickcontainer_p.h
+++ b/src/templates/qquickcontainer_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
#include <QtQml/qqmllist.h>
QT_BEGIN_NAMESPACE
class QQuickContainerPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickContainer : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickContainer : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(int count READ count NOTIFY countChanged FINAL)
@@ -67,7 +67,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickContainer : public QQuickControl
Q_CLASSINFO("DefaultProperty", "contentData")
public:
- explicit QQuickContainer(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickContainer(QQuickItem *parent = nullptr);
~QQuickContainer();
int count() const;
@@ -96,8 +96,8 @@ Q_SIGNALS:
protected:
QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent);
- void itemChange(ItemChange change, const ItemChangeData &data) Q_DECL_OVERRIDE;
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
+ void itemChange(ItemChange change, const ItemChangeData &data) override;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
virtual bool isContent(QQuickItem *item) const;
virtual void itemAdded(int index, QQuickItem *item);
diff --git a/src/templates/qquickcontainer_p_p.h b/src/templates/qquickcontainer_p_p.h
index 6eb79c88..3382d104 100644
--- a/src/templates/qquickcontainer_p_p.h
+++ b/src/templates/qquickcontainer_p_p.h
@@ -48,13 +48,13 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
#include <QtQuick/private/qquickitemchangelistener_p.h>
#include <QtQml/private/qqmlobjectmodel_p.h>
QT_BEGIN_NAMESPACE
-class Q_LABSTEMPLATES_EXPORT QQuickContainerPrivate : public QQuickControlPrivate, public QQuickItemChangeListener
+class Q_QUICKTEMPLATES_EXPORT QQuickContainerPrivate : public QQuickControlPrivate, public QQuickItemChangeListener
{
Q_DECLARE_PUBLIC(QQuickContainer)
@@ -71,10 +71,10 @@ public:
void _q_currentIndexChanged();
- void itemChildAdded(QQuickItem *item, QQuickItem *child) Q_DECL_OVERRIDE;
- void itemSiblingOrderChanged(QQuickItem *item) Q_DECL_OVERRIDE;
- void itemParentChanged(QQuickItem *item, QQuickItem *parent) Q_DECL_OVERRIDE;
- void itemDestroyed(QQuickItem *item) Q_DECL_OVERRIDE;
+ void itemChildAdded(QQuickItem *item, QQuickItem *child) override;
+ void itemSiblingOrderChanged(QQuickItem *item) override;
+ void itemParentChanged(QQuickItem *item, QQuickItem *parent) override;
+ void itemDestroyed(QQuickItem *item) override;
static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj);
static int contentData_count(QQmlListProperty<QObject> *prop);
diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp
index 5522b996..71e783e7 100644
--- a/src/templates/qquickcontrol.cpp
+++ b/src/templates/qquickcontrol.cpp
@@ -37,6 +37,7 @@
#include "qquickcontrol_p.h"
#include "qquickcontrol_p_p.h"
+#include <QtGui/qstylehints.h>
#include <QtGui/qguiapplication.h>
#include "qquicklabel_p.h"
#include "qquicklabel_p_p.h"
@@ -62,17 +63,21 @@ QT_BEGIN_NAMESPACE
\inherits Item
\instantiates QQuickControl
\inqmlmodule Qt.labs.controls
- \brief A user interface control.
+ \brief The base type of user interface controls.
- Control is the base type of user interface controls.
+ Control is the base type of user interface controls. It receives input
+ events from the window system, and paints a representation of itself on
+ the screen.
+ \image qtquickcontrols-control.png
\labs
*/
QQuickControlPrivate::QQuickControlPrivate() :
- hasTopPadding(false), hasLeftPadding(false), hasRightPadding(false), hasBottomPadding(false), hasLocale(false),
- padding(0), topPadding(0), leftPadding(0), rightPadding(0), bottomPadding(0), spacing(0), focusReason(Qt::OtherFocusReason),
- background(Q_NULLPTR), contentItem(Q_NULLPTR), accessibleAttached(Q_NULLPTR)
+ hasTopPadding(false), hasLeftPadding(false), hasRightPadding(false), hasBottomPadding(false), hasLocale(false), hovered(false), wheelEnabled(false),
+ padding(0), topPadding(0), leftPadding(0), rightPadding(0), bottomPadding(0), spacing(0),
+ focusPolicy(Qt::NoFocus), focusReason(Qt::OtherFocusReason),
+ background(nullptr), contentItem(nullptr), accessibleAttached(nullptr)
{
#ifndef QT_NO_ACCESSIBILITY
QAccessible::installActivationObserver(this);
@@ -217,9 +222,9 @@ void QQuickControl::accessibilityActiveChanged(bool active)
Returns the font that the control w inherits from its ancestors and
QGuiApplication::font.
*/
-QFont QQuickControlPrivate::naturalControlFont(const QQuickItem *q)
+QFont QQuickControlPrivate::parentFont(const QQuickItem *item)
{
- QQuickItem *p = q->parentItem();
+ QQuickItem *p = item->parentItem();
while (p) {
if (QQuickControl *control = qobject_cast<QQuickControl *>(p))
return control->font();
@@ -233,7 +238,7 @@ QFont QQuickControlPrivate::naturalControlFont(const QQuickItem *q)
p = p->parentItem();
}
- if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(q->window()))
+ if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window()))
return window->font();
return themeFont(QPlatformTheme::SystemFont);
@@ -264,7 +269,7 @@ QFont QQuickControlPrivate::themeFont(QPlatformTheme::Font type)
void QQuickControlPrivate::resolveFont()
{
Q_Q(QQuickControl);
- inheritFont(naturalControlFont(q));
+ inheritFont(parentFont(q));
}
void QQuickControlPrivate::inheritFont(const QFont &f)
@@ -287,18 +292,22 @@ void QQuickControlPrivate::inheritFont(const QFont &f)
void QQuickControlPrivate::updateFont(const QFont &f)
{
Q_Q(QQuickControl);
- const bool changed = resolvedFont != f;
+ QFont old = resolvedFont;
resolvedFont = f;
+ if (old != f)
+ q->fontChange(f, old);
+
QQuickControlPrivate::updateFontRecur(q, f);
- if (changed)
+ if (old != f)
emit q->fontChanged();
}
void QQuickControlPrivate::updateFontRecur(QQuickItem *item, const QFont &f)
{
- foreach (QQuickItem *child, item->childItems()) {
+ const auto childItems = item->childItems();
+ for (QQuickItem *child : childItems) {
if (QQuickControl *control = qobject_cast<QQuickControl *>(child))
QQuickControlPrivate::get(control)->inheritFont(f);
else if (QQuickLabel *label = qobject_cast<QQuickLabel *>(child))
@@ -623,6 +632,14 @@ void QQuickControl::resetSpacing()
\qmlproperty Locale Qt.labs.controls::Control::locale
This property holds the locale of the control.
+ It contains locale specific properties for formatting data and numbers.
+ Unless a special locale has been set, this is either the parent's locale
+ or the default locale.
+
+ Control propagates explicit locale properties from parent to children.
+ If you change a specific property on a control's locale, that property
+ propagates to all of the control's children, overriding any system defaults
+ for that property.
\sa mirrored, {LayoutMirroring}{LayoutMirroring}
*/
@@ -655,11 +672,6 @@ QLocale QQuickControlPrivate::calcLocale(const QQuickItem *item)
{
const QQuickItem *p = item;
while (p) {
- if (const QQuickPopupItem *popup = qobject_cast<const QQuickPopupItem *>(p)) {
- item = popup;
- break;
- }
-
if (const QQuickControl *control = qobject_cast<const QQuickControl *>(p))
return control->locale();
@@ -699,7 +711,8 @@ void QQuickControlPrivate::updateLocale(const QLocale &l, bool e)
void QQuickControlPrivate::updateLocaleRecur(QQuickItem *item, const QLocale &l)
{
- foreach (QQuickItem *child, item->childItems()) {
+ const auto childItems = item->childItems();
+ for (QQuickItem *child : childItems) {
if (QQuickControl *control = qobject_cast<QQuickControl *>(child))
QQuickControlPrivate::get(control)->updateLocale(l, false);
else
@@ -725,6 +738,37 @@ bool QQuickControl::isMirrored() const
}
/*!
+ \qmlproperty enumeration Qt.labs.controls::Control::focusPolicy
+
+ This property determines the way the control accepts focus.
+
+ \value Qt.TabFocus The control accepts focus by tabbing.
+ \value Qt.ClickFocus The control accepts focus by clicking.
+ \value Qt.StrongFocus The control accepts focus by both tabbing and clicking.
+ \value Qt.WheelFocus The control accepts focus by tabbing, clicking, and using the mouse wheel.
+ \value Qt.NoFocus The control does not accept focus.
+*/
+Qt::FocusPolicy QQuickControl::focusPolicy() const
+{
+ Q_D(const QQuickControl);
+ uint policy = d->focusPolicy;
+ if (activeFocusOnTab())
+ policy |= Qt::TabFocus;
+ return static_cast<Qt::FocusPolicy>(policy);
+}
+
+void QQuickControl::setFocusPolicy(Qt::FocusPolicy policy)
+{
+ Q_D(QQuickControl);
+ if (d->focusPolicy == policy)
+ return;
+
+ d->focusPolicy = policy;
+ setActiveFocusOnTab(policy & Qt::TabFocus);
+ emit focusPolicyChanged();
+}
+
+/*!
\qmlproperty enumeration Qt.labs.controls::Control::focusReason
\readonly
@@ -753,10 +797,79 @@ Qt::FocusReason QQuickControl::focusReason() const
void QQuickControl::setFocusReason(Qt::FocusReason reason)
{
Q_D(QQuickControl);
- if (d->focusReason != reason) {
- d->focusReason = reason;
- emit focusReasonChanged();
- }
+ if (d->focusReason == reason)
+ return;
+
+ d->focusReason = reason;
+ emit focusReasonChanged();
+}
+
+/*!
+ \qmlproperty bool Qt.labs.controls::Control::hovered
+ \readonly
+
+ This property holds whether the control is hovered.
+
+ \sa hoverEnabled
+*/
+bool QQuickControl::isHovered() const
+{
+ Q_D(const QQuickControl);
+ return d->hovered;
+}
+
+void QQuickControl::setHovered(bool hovered)
+{
+ Q_D(QQuickControl);
+ if (hovered == d->hovered)
+ return;
+
+ d->hovered = hovered;
+ emit hoveredChanged();
+}
+
+/*!
+ \qmlproperty bool Qt.labs.controls::Control::hoverEnabled
+
+ This property determines whether the control accepts hover events. The default value is \c false.
+
+ \sa hovered
+*/
+bool QQuickControl::isHoverEnabled() const
+{
+ Q_D(const QQuickControl);
+ return d->hoverEnabled;
+}
+
+void QQuickControl::setHoverEnabled(bool enabled)
+{
+ Q_D(QQuickControl);
+ if (enabled == d->hoverEnabled)
+ return;
+
+ setAcceptHoverEvents(enabled);
+ emit hoverEnabledChanged();
+}
+
+/*!
+ \qmlproperty bool Qt.labs.controls::Control::wheelEnabled
+
+ This property determines whether the control handles wheel events. The default value is \c false.
+*/
+bool QQuickControl::isWheelEnabled() const
+{
+ Q_D(const QQuickControl);
+ return d->wheelEnabled;
+}
+
+void QQuickControl::setWheelEnabled(bool enabled)
+{
+ Q_D(QQuickControl);
+ if (d->wheelEnabled == enabled)
+ return;
+
+ d->wheelEnabled = enabled;
+ emit wheelEnabledChanged();
}
/*!
@@ -777,18 +890,19 @@ QQuickItem *QQuickControl::background() const
void QQuickControl::setBackground(QQuickItem *background)
{
Q_D(QQuickControl);
- if (d->background != background) {
- delete d->background;
- d->background = background;
- if (background) {
- background->setParentItem(this);
- if (qFuzzyIsNull(background->z()))
- background->setZ(-1);
- if (isComponentComplete())
- d->resizeBackground();
- }
- emit backgroundChanged();
+ if (d->background == background)
+ return;
+
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setParentItem(this);
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
+ if (isComponentComplete())
+ d->resizeBackground();
}
+ emit backgroundChanged();
}
/*!
@@ -807,18 +921,19 @@ QQuickItem *QQuickControl::contentItem() const
void QQuickControl::setContentItem(QQuickItem *item)
{
Q_D(QQuickControl);
- if (d->contentItem != item) {
- contentItemChange(item, d->contentItem);
- delete d->contentItem;
- d->contentItem = item;
- if (item) {
- if (!item->parentItem())
- item->setParentItem(this);
- if (isComponentComplete())
- d->resizeContent();
- }
- emit contentItemChanged();
+ if (d->contentItem == item)
+ return;
+
+ contentItemChange(item, d->contentItem);
+ delete d->contentItem;
+ d->contentItem = item;
+ if (item) {
+ if (!item->parentItem())
+ item->setParentItem(this);
+ if (isComponentComplete())
+ d->resizeContent();
}
+ emit contentItemChanged();
}
void QQuickControl::classBegin()
@@ -857,8 +972,26 @@ void QQuickControl::focusOutEvent(QFocusEvent *event)
setFocusReason(event->reason());
}
+void QQuickControl::hoverEnterEvent(QHoverEvent *event)
+{
+ Q_D(QQuickControl);
+ setHovered(d->hoverEnabled);
+ event->setAccepted(d->hoverEnabled);
+}
+
+void QQuickControl::hoverLeaveEvent(QHoverEvent *event)
+{
+ Q_D(QQuickControl);
+ setHovered(false);
+ event->setAccepted(d->hoverEnabled);
+}
+
void QQuickControl::mousePressEvent(QMouseEvent *event)
{
+ Q_D(QQuickControl);
+ if ((d->focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && !QGuiApplication::styleHints()->setFocusOnTouchRelease())
+ forceActiveFocus(Qt::MouseFocusReason);
+
event->accept();
}
@@ -869,9 +1002,22 @@ void QQuickControl::mouseMoveEvent(QMouseEvent *event)
void QQuickControl::mouseReleaseEvent(QMouseEvent *event)
{
+ Q_D(QQuickControl);
+ if ((d->focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && QGuiApplication::styleHints()->setFocusOnTouchRelease())
+ forceActiveFocus(Qt::MouseFocusReason);
+
event->accept();
}
+void QQuickControl::wheelEvent(QWheelEvent *event)
+{
+ Q_D(QQuickControl);
+ if ((d->focusPolicy & Qt::WheelFocus) == Qt::WheelFocus)
+ forceActiveFocus(Qt::MouseFocusReason);
+
+ event->setAccepted(d->wheelEnabled);
+}
+
void QQuickControl::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickControl);
@@ -884,6 +1030,12 @@ void QQuickControl::geometryChanged(const QRectF &newGeometry, const QRectF &old
emit availableHeightChanged();
}
+void QQuickControl::fontChange(const QFont &newFont, const QFont &oldFont)
+{
+ Q_UNUSED(newFont);
+ Q_UNUSED(oldFont);
+}
+
void QQuickControl::mirrorChange()
{
emit mirroredChanged();
diff --git a/src/templates/qquickcontrol_p.h b/src/templates/qquickcontrol_p.h
index 8d4055e5..e393e827 100644
--- a/src/templates/qquickcontrol_p.h
+++ b/src/templates/qquickcontrol_p.h
@@ -50,16 +50,16 @@
#include <QtCore/qlocale.h>
#include <QtQuick/qquickitem.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
QT_BEGIN_NAMESPACE
class QQuickControlPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickControl : public QQuickItem
+class Q_QUICKTEMPLATES_EXPORT QQuickControl : public QQuickItem
{
Q_OBJECT
- Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged)
+ Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL)
Q_PROPERTY(qreal availableWidth READ availableWidth NOTIFY availableWidthChanged FINAL)
Q_PROPERTY(qreal availableHeight READ availableHeight NOTIFY availableHeightChanged FINAL)
Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL)
@@ -70,15 +70,19 @@ class Q_LABSTEMPLATES_EXPORT QQuickControl : public QQuickItem
Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing RESET resetSpacing NOTIFY spacingChanged FINAL)
Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL)
Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL)
+ Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy NOTIFY focusPolicyChanged FINAL)
Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL)
+ Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL)
+ Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled NOTIFY hoverEnabledChanged FINAL)
+ Q_PROPERTY(bool wheelEnabled READ isWheelEnabled WRITE setWheelEnabled NOTIFY wheelEnabledChanged FINAL)
Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL)
public:
- explicit QQuickControl(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickControl(QQuickItem *parent = nullptr);
QFont font() const;
- void setFont(const QFont &);
+ void setFont(const QFont &font);
void resetFont();
qreal availableWidth() const;
@@ -114,9 +118,21 @@ public:
bool isMirrored() const;
+ Qt::FocusPolicy focusPolicy() const;
+ void setFocusPolicy(Qt::FocusPolicy policy);
+
Qt::FocusReason focusReason() const;
void setFocusReason(Qt::FocusReason reason);
+ bool isHovered() const;
+ void setHovered(bool hovered);
+
+ bool isHoverEnabled() const;
+ void setHoverEnabled(bool enabled);
+
+ bool isWheelEnabled() const;
+ void setWheelEnabled(bool enabled);
+
QQuickItem *background() const;
void setBackground(QQuickItem *background);
@@ -135,7 +151,11 @@ Q_SIGNALS:
void spacingChanged();
void localeChanged();
void mirroredChanged();
+ void focusPolicyChanged();
void focusReasonChanged();
+ void hoveredChanged();
+ void hoverEnabledChanged();
+ void wheelEnabledChanged();
void backgroundChanged();
void contentItemChanged();
@@ -144,19 +164,23 @@ protected:
QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent);
- void classBegin() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void classBegin() override;
+ void componentComplete() override;
- void itemChange(ItemChange change, const ItemChangeData &value) Q_DECL_OVERRIDE;
+ void itemChange(ItemChange change, const ItemChangeData &value) override;
- void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
+ void focusInEvent(QFocusEvent *event) override;
+ void focusOutEvent(QFocusEvent *event) override;
+ void hoverEnterEvent(QHoverEvent *event) override;
+ void hoverLeaveEvent(QHoverEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void wheelEvent(QWheelEvent *event) override;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ virtual void fontChange(const QFont &newFont, const QFont &oldFont);
virtual void mirrorChange();
virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding);
virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem);
diff --git a/src/templates/qquickcontrol_p_p.h b/src/templates/qquickcontrol_p_p.h
index fff2487b..301483ab 100644
--- a/src/templates/qquickcontrol_p_p.h
+++ b/src/templates/qquickcontrol_p_p.h
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
class QQuickAccessibleAttached;
-class Q_LABSTEMPLATES_EXPORT QQuickControlPrivate : public QQuickItemPrivate
+class Q_QUICKTEMPLATES_EXPORT QQuickControlPrivate : public QQuickItemPrivate
#ifndef QT_NO_ACCESSIBILITY
, public QAccessible::ActivationObserver
#endif
@@ -77,7 +77,7 @@ public:
return control->d_func();
}
- void mirrorChange() Q_DECL_OVERRIDE;
+ void mirrorChange() override;
void setTopPadding(qreal value, bool reset = false);
void setLeftPadding(qreal value, bool reset = false);
@@ -85,23 +85,23 @@ public:
void setBottomPadding(qreal value, bool reset = false);
void resizeBackground();
- void resizeContent();
+ virtual void resizeContent();
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
- void updateFont(const QFont &);
- static void updateFontRecur(QQuickItem *item, const QFont &);
+ void updateFont(const QFont &f);
+ static void updateFontRecur(QQuickItem *item, const QFont &f);
inline void setFont_helper(const QFont &f) {
if (resolvedFont.resolve() == f.resolve() && resolvedFont == f)
return;
updateFont(f);
}
- void resolveFont();
+ virtual void resolveFont();
void inheritFont(const QFont &f);
- static QFont naturalControlFont(const QQuickItem *);
+ static QFont parentFont(const QQuickItem *item);
static QFont themeFont(QPlatformTheme::Font type);
void updateLocale(const QLocale &l, bool e);
@@ -116,6 +116,8 @@ public:
bool hasRightPadding;
bool hasBottomPadding;
bool hasLocale;
+ bool hovered;
+ bool wheelEnabled;
qreal padding;
qreal topPadding;
qreal leftPadding;
@@ -123,6 +125,7 @@ public:
qreal bottomPadding;
qreal spacing;
QLocale locale;
+ Qt::FocusPolicy focusPolicy;
Qt::FocusReason focusReason;
QQuickItem *background;
QQuickItem *contentItem;
diff --git a/src/templates/qquickdial.cpp b/src/templates/qquickdial.cpp
index 8d6e655a..89baec20 100644
--- a/src/templates/qquickdial.cpp
+++ b/src/templates/qquickdial.cpp
@@ -38,7 +38,7 @@
#include <QtCore/qmath.h>
#include <QtQuick/private/qquickflickable_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
QT_BEGIN_NAMESPACE
@@ -92,7 +92,7 @@ public:
stepSize(0),
pressed(false),
snapMode(QQuickDial::NoSnap),
- handle(Q_NULLPTR)
+ handle(nullptr)
{
}
@@ -143,14 +143,15 @@ void QQuickDialPrivate::setPosition(qreal pos)
{
Q_Q(QQuickDial);
pos = qBound<qreal>(0.0, pos, 1.0);
- if (!qFuzzyCompare(position, pos)) {
- position = pos;
+ if (qFuzzyCompare(position, pos))
+ return;
- angle = startAngle + position * qAbs(endAngle - startAngle);
+ position = pos;
- emit q->positionChanged();
- emit q->angleChanged();
- }
+ angle = startAngle + position * qAbs(endAngle - startAngle);
+
+ emit q->positionChanged();
+ emit q->angleChanged();
}
void QQuickDialPrivate::updatePosition()
@@ -184,13 +185,14 @@ qreal QQuickDial::from() const
void QQuickDial::setFrom(qreal from)
{
Q_D(QQuickDial);
- if (!qFuzzyCompare(d->from, from)) {
- d->from = from;
- emit fromChanged();
- if (isComponentComplete()) {
- setValue(d->value);
- d->updatePosition();
- }
+ if (qFuzzyCompare(d->from, from))
+ return;
+
+ d->from = from;
+ emit fromChanged();
+ if (isComponentComplete()) {
+ setValue(d->value);
+ d->updatePosition();
}
}
@@ -211,13 +213,14 @@ qreal QQuickDial::to() const
void QQuickDial::setTo(qreal to)
{
Q_D(QQuickDial);
- if (!qFuzzyCompare(d->to, to)) {
- d->to = to;
- emit toChanged();
- if (isComponentComplete()) {
- setValue(d->value);
- d->updatePosition();
- }
+ if (qFuzzyCompare(d->to, to))
+ return;
+
+ d->to = to;
+ emit toChanged();
+ if (isComponentComplete()) {
+ setValue(d->value);
+ d->updatePosition();
}
}
@@ -245,11 +248,12 @@ void QQuickDial::setValue(qreal value)
if (isComponentComplete())
value = d->from > d->to ? qBound(d->to, value, d->from) : qBound(d->from, value, d->to);
- if (!qFuzzyCompare(d->value, value)) {
- d->value = value;
- d->updatePosition();
- emit valueChanged();
- }
+ if (qFuzzyCompare(d->value, value))
+ return;
+
+ d->value = value;
+ d->updatePosition();
+ emit valueChanged();
}
/*!
@@ -304,10 +308,11 @@ qreal QQuickDial::stepSize() const
void QQuickDial::setStepSize(qreal step)
{
Q_D(QQuickDial);
- if (!qFuzzyCompare(d->stepSize, step)) {
- d->stepSize = step;
- emit stepSizeChanged();
- }
+ if (qFuzzyCompare(d->stepSize, step))
+ return;
+
+ d->stepSize = step;
+ emit stepSizeChanged();
}
/*!
@@ -334,10 +339,11 @@ QQuickDial::SnapMode QQuickDial::snapMode() const
void QQuickDial::setSnapMode(SnapMode mode)
{
Q_D(QQuickDial);
- if (d->snapMode != mode) {
- d->snapMode = mode;
- emit snapModeChanged();
- }
+ if (d->snapMode == mode)
+ return;
+
+ d->snapMode = mode;
+ emit snapModeChanged();
}
/*!
@@ -367,11 +373,12 @@ bool QQuickDial::isPressed() const
void QQuickDial::setPressed(bool pressed)
{
Q_D(QQuickDial);
- if (d->pressed != pressed) {
- d->pressed = pressed;
- setAccessibleProperty("pressed", pressed);
- emit pressedChanged();
- }
+ if (d->pressed == pressed)
+ return;
+
+ d->pressed = pressed;
+ setAccessibleProperty("pressed", pressed);
+ emit pressedChanged();
}
/*!
@@ -420,12 +427,13 @@ QQuickItem *QQuickDial::handle() const
void QQuickDial::setHandle(QQuickItem *handle)
{
Q_D(QQuickDial);
- if (handle != d->handle) {
- d->handle = handle;
- if (d->handle && !d->handle->parentItem())
- d->handle->setParentItem(this);
- emit handleChanged();
- }
+ if (handle == d->handle)
+ return;
+
+ d->handle = handle;
+ if (d->handle && !d->handle->parentItem())
+ d->handle->setParentItem(this);
+ emit handleChanged();
}
void QQuickDial::keyPressEvent(QKeyEvent *event)
diff --git a/src/templates/qquickdial_p.h b/src/templates/qquickdial_p.h
index 19d37547..dd75b2ba 100644
--- a/src/templates/qquickdial_p.h
+++ b/src/templates/qquickdial_p.h
@@ -50,14 +50,14 @@
#include <QtCore/qvariant.h>
#include <QtQml/qqmlcomponent.h>
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickDialAttached;
class QQuickDialPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickDial : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickDial : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL)
@@ -71,7 +71,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickDial : public QQuickControl
Q_PROPERTY(QQuickItem *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL)
public:
- explicit QQuickDial(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickDial(QQuickItem *parent = nullptr);
qreal from() const;
void setFrom(qreal from);
@@ -121,18 +121,18 @@ Q_SIGNALS:
void handleChanged();
protected:
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void mirrorChange() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void mirrorChange() override;
+ void componentComplete() override;
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickdrawer.cpp b/src/templates/qquickdrawer.cpp
index 5f3d95c9..58fe2d87 100644
--- a/src/templates/qquickdrawer.cpp
+++ b/src/templates/qquickdrawer.cpp
@@ -41,7 +41,8 @@
#include <QtQuick/private/qquickwindow_p.h>
#include <QtQuick/private/qquickanimation_p.h>
#include <QtQuick/private/qquickitemchangelistener_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickvelocitycalculator_p_p.h>
QT_BEGIN_NAMESPACE
@@ -52,18 +53,18 @@ QT_BEGIN_NAMESPACE
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-navigation
\ingroup qtlabscontrols-containers
- \brief A side panel control.
+ \brief Provides a swipe-based side panel.
Drawer provides a swipe-based side panel, similar to those often used in
touch interfaces to provide a central location for navigation.
\table
\row
- \li \image qtlabscontrols-drawer-wireframe.png
+ \li \image qtquickcontrols-drawer-wireframe.png
Drawer can be positioned at any of the four edges of the content item. \br
In this image, it is against the left edge of the window.
- \li \image qtlabscontrols-drawer-expanded-wireframe.png
+ \li \image qtquickcontrols-drawer-expanded-wireframe.png
The drawer is then opened by \e "dragging" it out from the left edge \br
of the window.
\endtable
@@ -97,19 +98,20 @@ class QQuickDrawerPrivate : public QQuickControlPrivate, public QQuickItemChange
public:
QQuickDrawerPrivate() : edge(Qt::LeftEdge), offset(0), position(0),
- content(Q_NULLPTR), animation(Q_NULLPTR) { }
+ content(nullptr), animation(nullptr) { }
void updateContent();
bool handleMousePressEvent(QQuickItem *item, QMouseEvent *event);
bool handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event);
bool handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event);
- void itemGeometryChanged(QQuickItem *, const QRectF &, const QRectF &) Q_DECL_OVERRIDE;
+ void itemGeometryChanged(QQuickItem *, const QRectF &, const QRectF &) override;
Qt::Edge edge;
qreal offset;
qreal position;
QPointF pressPoint;
+ QQuickVelocityCalculator velocityCalculator;
QQuickItem *content;
QQuickPropertyAnimation *animation;
};
@@ -167,6 +169,8 @@ bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *e
event->accept();
}
+ velocityCalculator.startMeasuring(pressPoint, event->timestamp());
+
return item == q;
}
@@ -204,21 +208,20 @@ bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *ev
return q->keepMouseGrab();
}
+static const qreal openCloseVelocityThreshold = 300;
+
bool QQuickDrawerPrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event)
{
Q_Q(QQuickDrawer);
bool wasGrabbed = q->keepMouseGrab();
if (wasGrabbed) {
-// int startDragVelocity = QGuiApplication::styleHints()->startDragVelocity();
-// if (startDragVelocity && QGuiApplicationPrivate::mouseEventCaps(event) & QTouchDevice::Velocity) {
-// QVector2D velocity = QGuiApplicationPrivate::mouseEventVelocity(event);
-// qreal vel = (edge == Qt::LeftEdge || edge == Qt::RightEdge) ? velocity.x() : velocity.y();
-// qDebug() << vel << "vs." << startDragVelocity;
-// }
- if (position < 0.3) {
- q->close();
- } else if (position > 0.7) {
+ velocityCalculator.stopMeasuring(event->pos(), event->timestamp());
+ const qreal velocity = velocityCalculator.velocity().x();
+
+ if (position > 0.7 || velocity > openCloseVelocityThreshold) {
q->open();
+ } else if (position < 0.3 || velocity < -openCloseVelocityThreshold) {
+ q->close();
} else {
switch (edge) {
case Qt::LeftEdge:
@@ -290,12 +293,13 @@ Qt::Edge QQuickDrawer::edge() const
void QQuickDrawer::setEdge(Qt::Edge edge)
{
Q_D(QQuickDrawer);
- if (d->edge != edge) {
- d->edge = edge;
- if (isComponentComplete())
- d->updateContent();
- emit edgeChanged();
- }
+ if (d->edge == edge)
+ return;
+
+ d->edge = edge;
+ if (isComponentComplete())
+ d->updateContent();
+ emit edgeChanged();
}
/*!
@@ -315,12 +319,13 @@ void QQuickDrawer::setPosition(qreal position)
{
Q_D(QQuickDrawer);
position = qBound<qreal>(0.0, position, 1.0);
- if (!qFuzzyCompare(d->position, position)) {
- d->position = position;
- if (isComponentComplete())
- d->updateContent();
- emit positionChanged();
- }
+ if (qFuzzyCompare(d->position, position))
+ return;
+
+ d->position = position;
+ if (isComponentComplete())
+ d->updateContent();
+ emit positionChanged();
}
@@ -338,20 +343,21 @@ QQuickItem *QQuickDrawer::contentItem() const
void QQuickDrawer::setContentItem(QQuickItem *item)
{
Q_D(QQuickDrawer);
- if (d->content != item) {
- if (d->content) {
- QQuickItemPrivate::get(d->content)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
- delete d->content;
- }
- d->content = item;
- if (item) {
- item->setParentItem(this);
- QQuickItemPrivate::get(item)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
- if (isComponentComplete())
- d->updateContent();
- }
- emit contentItemChanged();
+ if (d->content == item)
+ return;
+
+ if (d->content) {
+ QQuickItemPrivate::get(d->content)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
+ delete d->content;
+ }
+ d->content = item;
+ if (item) {
+ item->setParentItem(this);
+ QQuickItemPrivate::get(item)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
+ if (isComponentComplete())
+ d->updateContent();
}
+ emit contentItemChanged();
}
/*!
@@ -371,15 +377,16 @@ QQuickPropertyAnimation *QQuickDrawer::animation() const
void QQuickDrawer::setAnimation(QQuickPropertyAnimation *animation)
{
Q_D(QQuickDrawer);
- if (d->animation != animation) {
- delete d->animation;
- d->animation = animation;
- if (animation) {
- animation->setTargetObject(this);
- animation->setProperty(QStringLiteral("position"));
- }
- emit animationChanged();
+ if (d->animation == animation)
+ return;
+
+ delete d->animation;
+ d->animation = animation;
+ if (animation) {
+ animation->setTargetObject(this);
+ animation->setProperty(QStringLiteral("position"));
}
+ emit animationChanged();
}
/*!
@@ -461,6 +468,7 @@ void QQuickDrawer::mouseUngrabEvent()
Q_D(QQuickDrawer);
QQuickControl::mouseUngrabEvent();
d->pressPoint = QPoint();
+ d->velocityCalculator.reset();
}
void QQuickDrawer::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
diff --git a/src/templates/qquickdrawer_p.h b/src/templates/qquickdrawer_p.h
index f953b0fd..ce9a3cb7 100644
--- a/src/templates/qquickdrawer_p.h
+++ b/src/templates/qquickdrawer_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickPropertyAnimation;
class QQuickDrawerPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickDrawer : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickDrawer : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(Qt::Edge edge READ edge WRITE setEdge NOTIFY edgeChanged FINAL)
@@ -66,7 +66,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickDrawer : public QQuickControl
Q_CLASSINFO("DefaultProperty", "contentItem")
public:
- explicit QQuickDrawer(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickDrawer(QQuickItem *parent = nullptr);
Qt::Edge edge() const;
void setEdge(Qt::Edge edge);
@@ -92,13 +92,13 @@ Q_SIGNALS:
void animationChanged();
protected:
- bool childMouseEventFilter(QQuickItem *child, QEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void componentComplete() override;
virtual qreal positionAt(const QPointF &point) const;
diff --git a/src/templates/qquickframe.cpp b/src/templates/qquickframe.cpp
index 67dfe256..3db53300 100644
--- a/src/templates/qquickframe.cpp
+++ b/src/templates/qquickframe.cpp
@@ -45,30 +45,30 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickFrame
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-containers
- \brief A frame control.
+ \brief A logical group of controls within a visual frame.
- Frame is used to layout a logical group of controls together, within a
+ Frame is used to layout a logical group of controls together within a
visual frame. Frame does not provide a layout of its own, but requires
you to position its contents, for instance by creating a \l RowLayout
or a \l ColumnLayout.
+ Items declared as children of a Frame are automatically parented to the
+ Frame's contentItem. Items created dynamically need to be explicitly
+ parented to the contentItem.
+
If only a single item is used within a Frame, it will resize to fit the
implicit size of its contained item. This makes it particularly suitable
for use together with layouts.
- \image qtlabscontrols-frame.png
+ \image qtquickcontrols-frame.png
- \snippet qtlabscontrols-frame.qml 1
+ \snippet qtquickcontrols-frame.qml 1
\labs
\sa {Customizing Frame}, {Container Controls}
*/
-QQuickFramePrivate::QQuickFramePrivate() : frame(Q_NULLPTR)
-{
-}
-
QQuickFrame::QQuickFrame(QQuickItem *parent) :
QQuickPane(*(new QQuickFramePrivate), parent)
{
@@ -79,29 +79,4 @@ QQuickFrame::QQuickFrame(QQuickFramePrivate &dd, QQuickItem *parent) :
{
}
-/*!
- \qmlproperty Item Qt.labs.controls::Frame::frame
-
- This property holds the visual frame item.
-
- \sa {Customizing Frame}
-*/
-QQuickItem *QQuickFrame::frame() const
-{
- Q_D(const QQuickFrame);
- return d->frame;
-}
-
-void QQuickFrame::setFrame(QQuickItem *frame)
-{
- Q_D(QQuickFrame);
- if (d->frame != frame) {
- delete d->frame;
- d->frame = frame;
- if (frame && !frame->parentItem())
- frame->setParentItem(this);
- emit frameChanged();
- }
-}
-
QT_END_NAMESPACE
diff --git a/src/templates/qquickframe_p.h b/src/templates/qquickframe_p.h
index 0bfd63e8..3d03caf1 100644
--- a/src/templates/qquickframe_p.h
+++ b/src/templates/qquickframe_p.h
@@ -48,25 +48,18 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickpane_p.h>
+#include <QtQuickTemplates/private/qquickpane_p.h>
QT_BEGIN_NAMESPACE
class QQuickFramePrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickFrame : public QQuickPane
+class Q_QUICKTEMPLATES_EXPORT QQuickFrame : public QQuickPane
{
Q_OBJECT
- Q_PROPERTY(QQuickItem *frame READ frame WRITE setFrame NOTIFY frameChanged FINAL)
public:
- explicit QQuickFrame(QQuickItem *parent = Q_NULLPTR);
-
- QQuickItem *frame() const;
- void setFrame(QQuickItem *frame);
-
-Q_SIGNALS:
- void frameChanged();
+ explicit QQuickFrame(QQuickItem *parent = nullptr);
protected:
QQuickFrame(QQuickFramePrivate &dd, QQuickItem *parent);
diff --git a/src/templates/qquickframe_p_p.h b/src/templates/qquickframe_p_p.h
index 3d570572..4d84a9f3 100644
--- a/src/templates/qquickframe_p_p.h
+++ b/src/templates/qquickframe_p_p.h
@@ -48,20 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickpane_p_p.h>
+#include <QtQuickTemplates/private/qquickpane_p_p.h>
QT_BEGIN_NAMESPACE
class QQuickFrame;
-class Q_LABSTEMPLATES_EXPORT QQuickFramePrivate : public QQuickPanePrivate
+class Q_QUICKTEMPLATES_EXPORT QQuickFramePrivate : public QQuickPanePrivate
{
- Q_DECLARE_PUBLIC(QQuickFrame)
-
-public:
- QQuickFramePrivate();
-
- QQuickItem *frame;
};
QT_END_NAMESPACE
diff --git a/src/templates/qquickgroupbox.cpp b/src/templates/qquickgroupbox.cpp
index 84944987..b339078c 100644
--- a/src/templates/qquickgroupbox.cpp
+++ b/src/templates/qquickgroupbox.cpp
@@ -47,33 +47,37 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickGroupBox
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-containers
- \brief A group box control.
+ \brief A frame with a logical group of controls.
GroupBox is used to layout a logical group of controls together, within
a titled visual frame. GroupBox does not provide a layout of its own, but
requires you to position its contents, for instance by creating a \l RowLayout
or a \l ColumnLayout.
+ Items declared as children of a GroupBox are automatically parented to the
+ GroupBox's contentItem. Items created dynamically need to be explicitly
+ parented to the contentItem.
+
If only a single item is used within a GroupBox, it will resize to fit the
implicit size of its contained item. This makes it particularly suitable
for use together with layouts.
- \image qtlabscontrols-groupbox.png
+ \image qtquickcontrols-groupbox.png
- \snippet qtlabscontrols-groupbox.qml 1
+ \snippet qtquickcontrols-groupbox.qml 1
\section2 Checkable GroupBox
Even though GroupBox has no built-in check box, it is straightforward
to create a checkable GroupBox by pairing it with a CheckBox.
- \image qtlabscontrols-groupbox-checkable.png
+ \image qtquickcontrols-groupbox-checkable.png
It is a common pattern to enable or disable the groupbox's children when
- its check box is toggled on/off, respectively, but the semantics of the
- check box is left to the application to decide.
+ its checkbox is toggled on or off, but it is the application that decides
+ on the behavior of the groupbox.
- \snippet qtlabscontrols-groupbox-checkable.qml 1
+ \snippet qtquickcontrols-groupbox-checkable.qml 1
\labs
@@ -83,7 +87,7 @@ QT_BEGIN_NAMESPACE
class QQuickGroupBoxPrivate : public QQuickFramePrivate
{
public:
- QQuickGroupBoxPrivate() : label(Q_NULLPTR) { }
+ QQuickGroupBoxPrivate() : label(nullptr) { }
QString title;
QQuickItem *label;
@@ -108,10 +112,11 @@ QString QQuickGroupBox::title() const
void QQuickGroupBox::setTitle(const QString &title)
{
Q_D(QQuickGroupBox);
- if (d->title != title) {
- d->title = title;
- emit titleChanged();
- }
+ if (d->title == title)
+ return;
+
+ d->title = title;
+ emit titleChanged();
}
/*!
@@ -130,13 +135,14 @@ QQuickItem *QQuickGroupBox::label() const
void QQuickGroupBox::setLabel(QQuickItem *label)
{
Q_D(QQuickGroupBox);
- if (d->label != label) {
- delete d->label;
- d->label = label;
- if (label && !label->parentItem())
- label->setParentItem(this);
- emit labelChanged();
- }
+ if (d->label == label)
+ return;
+
+ delete d->label;
+ d->label = label;
+ if (label && !label->parentItem())
+ label->setParentItem(this);
+ emit labelChanged();
}
QFont QQuickGroupBox::defaultFont() const
diff --git a/src/templates/qquickgroupbox_p.h b/src/templates/qquickgroupbox_p.h
index b81d6534..4c33f1dd 100644
--- a/src/templates/qquickgroupbox_p.h
+++ b/src/templates/qquickgroupbox_p.h
@@ -48,20 +48,20 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickframe_p.h>
+#include <QtQuickTemplates/private/qquickframe_p.h>
QT_BEGIN_NAMESPACE
class QQuickGroupBoxPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickGroupBox : public QQuickFrame
+class Q_QUICKTEMPLATES_EXPORT QQuickGroupBox : public QQuickFrame
{
Q_OBJECT
Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL)
Q_PROPERTY(QQuickItem *label READ label WRITE setLabel NOTIFY labelChanged FINAL)
public:
- explicit QQuickGroupBox(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickGroupBox(QQuickItem *parent = nullptr);
QString title() const;
void setTitle(const QString &title);
@@ -74,7 +74,7 @@ Q_SIGNALS:
void labelChanged();
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
private:
Q_DISABLE_COPY(QQuickGroupBox)
diff --git a/src/templates/qquickitemdelegate.cpp b/src/templates/qquickitemdelegate.cpp
index 98364fad..8ae9b535 100644
--- a/src/templates/qquickitemdelegate.cpp
+++ b/src/templates/qquickitemdelegate.cpp
@@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE
\inherits AbstractButton
\instantiates QQuickItemDelegate
\inqmlmodule Qt.labs.controls
- \brief An item delegate.
+ \brief A standard view item that can be used in various views and controls.
ItemDelegate presents a standard view item. It can be used as a delegate
in various views and controls, such as \l ListView and \l ComboBox.
@@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE
\l {AbstractButton::text}{text}, make items \l {AbstractButton::checkable}{checkable},
and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API.
- \snippet qtlabscontrols-itemdelegate.qml 1
+ \snippet qtquickcontrols-itemdelegate.qml 1
\labs
diff --git a/src/templates/qquickitemdelegate_p.h b/src/templates/qquickitemdelegate_p.h
index 1be909d7..c1e9c002 100644
--- a/src/templates/qquickitemdelegate_p.h
+++ b/src/templates/qquickitemdelegate_p.h
@@ -48,24 +48,24 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
class QQuickItemDelegatePrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickItemDelegate : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickItemDelegate : public QQuickAbstractButton
{
Q_OBJECT
public:
- explicit QQuickItemDelegate(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickItemDelegate(QQuickItem *parent = nullptr);
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquicklabel.cpp b/src/templates/qquicklabel.cpp
index 4eec06b3..86eb9144 100644
--- a/src/templates/qquicklabel.cpp
+++ b/src/templates/qquicklabel.cpp
@@ -55,15 +55,25 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickLabel
\inqmlmodule Qt.labs.controls
\ingroup text
- \brief A text label.
+ \brief A text label with inherited styling and font.
Label extends \l Text with styling and \l {Control::font}{font}
inheritance. The default colors and font are style specific. Label
can also have a visual \l background item.
- \image qtlabscontrols-label.png
+ \image qtquickcontrols-label.png
- \snippet qtlabscontrols-label.qml 1
+ \snippet qtquickcontrols-label.qml 1
+
+ You can use the properties of Text to change the appearance of the text as desired:
+
+ \qml
+ Label {
+ text: "Hello world"
+ font.pixelSize: 22
+ font.italic: true
+ }
+ \endqml
\labs
@@ -83,7 +93,7 @@ QQuickLabel::~QQuickLabel()
}
QQuickLabelPrivate::QQuickLabelPrivate()
- : background(Q_NULLPTR), accessibleAttached(Q_NULLPTR)
+ : background(nullptr), accessibleAttached(nullptr)
{
#ifndef QT_NO_ACCESSIBILITY
QAccessible::installActivationObserver(this);
@@ -108,7 +118,7 @@ QQuickLabelPrivate::~QQuickLabelPrivate()
void QQuickLabelPrivate::resolveFont()
{
Q_Q(QQuickLabel);
- inheritFont(QQuickControlPrivate::naturalControlFont(q));
+ inheritFont(QQuickControlPrivate::parentFont(q));
}
void QQuickLabelPrivate::inheritFont(const QFont &f)
@@ -193,16 +203,17 @@ QQuickItem *QQuickLabel::background() const
void QQuickLabel::setBackground(QQuickItem *background)
{
Q_D(QQuickLabel);
- if (d->background != background) {
- delete d->background;
- d->background = background;
- if (background) {
- background->setParentItem(this);
- if (qFuzzyIsNull(background->z()))
- background->setZ(-1);
- }
- emit backgroundChanged();
+ if (d->background == background)
+ return;
+
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setParentItem(this);
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
}
+ emit backgroundChanged();
}
void QQuickLabel::classBegin()
diff --git a/src/templates/qquicklabel_p.h b/src/templates/qquicklabel_p.h
index 26f72840..e2084fe0 100644
--- a/src/templates/qquicklabel_p.h
+++ b/src/templates/qquicklabel_p.h
@@ -49,20 +49,20 @@
//
#include <QtQuick/private/qquicktext_p.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
QT_BEGIN_NAMESPACE
class QQuickLabelPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickLabel : public QQuickText
+class Q_QUICKTEMPLATES_EXPORT QQuickLabel : public QQuickText
{
Q_OBJECT
Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override
Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
public:
- explicit QQuickLabel(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickLabel(QQuickItem *parent = nullptr);
~QQuickLabel();
QFont font() const;
@@ -76,10 +76,10 @@ Q_SIGNALS:
void backgroundChanged();
protected:
- void classBegin() Q_DECL_OVERRIDE;
+ void classBegin() override;
- void itemChange(ItemChange change, const ItemChangeData &value) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void itemChange(ItemChange change, const ItemChangeData &value) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
private:
Q_DISABLE_COPY(QQuickLabel)
diff --git a/src/templates/qquicklabel_p_p.h b/src/templates/qquicklabel_p_p.h
index 94d74132..aa24a5fd 100644
--- a/src/templates/qquicklabel_p_p.h
+++ b/src/templates/qquicklabel_p_p.h
@@ -79,8 +79,8 @@ public:
void _q_textChanged(const QString &text);
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
QFont font;
diff --git a/src/templates/qquickmenu.cpp b/src/templates/qquickmenu.cpp
index 0ea0caba..8a67dc46 100644
--- a/src/templates/qquickmenu.cpp
+++ b/src/templates/qquickmenu.cpp
@@ -44,6 +44,7 @@
#include <QtQuick/private/qquickitemchangelistener_p.h>
#include <QtQuick/private/qquickflickable_p.h>
#include <QtQuick/private/qquickevents_p_p.h>
+#include <QtQuick/private/qquickwindow_p.h>
QT_BEGIN_NAMESPACE
@@ -53,9 +54,9 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickMenu
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-menus
- \brief A menu control.
+ \brief A menu control that can be used as a context menu or popup menu.
- \image qtlabscontrols-menu.png
+ \image qtquickcontrols-menu.png
Menu has two main use cases:
\list
@@ -92,9 +93,7 @@ QT_BEGIN_NAMESPACE
*/
QQuickMenuPrivate::QQuickMenuPrivate() :
- contentModel(Q_NULLPTR),
- dummyFocusItem(Q_NULLPTR),
- ignoreActiveFocusChanges(false)
+ contentModel(nullptr)
{
Q_Q(QQuickMenu);
contentModel = new QQmlObjectModel(q);
@@ -125,7 +124,7 @@ void QQuickMenuPrivate::removeItem(int index, QQuickItem *item)
contentData.removeOne(item);
QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Destroyed | QQuickItemPrivate::Parent);
- item->setParentItem(Q_NULLPTR);
+ item->setParentItem(nullptr);
contentModel->remove(index);
}
@@ -161,7 +160,7 @@ void QQuickMenuPrivate::itemParentChanged(QQuickItem *item, QQuickItem *parent)
{
// remove dynamically unparented items (eg. by a Repeater)
if (!parent)
- removeItem(contentModel->indexOf(item, Q_NULLPTR), item);
+ removeItem(contentModel->indexOf(item, nullptr), item);
}
void QQuickMenuPrivate::itemSiblingOrderChanged(QQuickItem *)
@@ -171,14 +170,14 @@ void QQuickMenuPrivate::itemSiblingOrderChanged(QQuickItem *)
QList<QQuickItem *> siblings = contentItem->childItems();
for (int i = 0; i < siblings.count(); ++i) {
QQuickItem* sibling = siblings.at(i);
- int index = contentModel->indexOf(sibling, Q_NULLPTR);
+ int index = contentModel->indexOf(sibling, nullptr);
q->moveItem(index, i);
}
}
void QQuickMenuPrivate::itemDestroyed(QQuickItem *item)
{
- int index = contentModel->indexOf(item, Q_NULLPTR);
+ int index = contentModel->indexOf(item, nullptr);
if (index != -1)
removeItem(index, item);
}
@@ -193,67 +192,32 @@ void QQuickMenuPrivate::onItemPressed()
{
Q_Q(QQuickMenu);
QQuickItem *item = qobject_cast<QQuickItem*>(q->sender());
- int itemIndex = contentModel->indexOf(item, Q_NULLPTR);
- Q_ASSERT(itemIndex != -1);
-
- if (!contentItem->property("currentIndex").isValid())
- return;
-
- contentItem->setProperty("currentIndex", itemIndex);
+ if (item)
+ item->forceActiveFocus();
}
void QQuickMenuPrivate::onItemActiveFocusChanged()
{
- if (ignoreActiveFocusChanges)
- return;
-
Q_Q(QQuickMenu);
QQuickItem *item = qobject_cast<QQuickItem*>(q->sender());
if (!item->hasActiveFocus())
return;
- if (!contentItem->property("currentIndex").isValid())
- return;
-
- int indexOfItem = contentModel->indexOf(item, Q_NULLPTR);
- contentItem->setProperty("currentIndex", indexOfItem);
+ int indexOfItem = contentModel->indexOf(item, nullptr);
+ setCurrentIndex(indexOfItem);
}
-void QQuickMenuPrivate::onMenuVisibleChanged()
+int QQuickMenuPrivate::currentIndex() const
{
- Q_Q(QQuickMenu);
- if (q->isVisible()) {
- // Don't react to active focus changes here, as we're causing them.
- ignoreActiveFocusChanges = true;
- for (int i = 0; i < contentModel->count(); ++i) {
- QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->get(i));
- item->setFocus(true);
- }
- ignoreActiveFocusChanges = false;
-
- // We must do this last so that none of the menu items have focus.
- dummyFocusItem->forceActiveFocus();
- } else {
- // Ensure that when the menu isn't visible, there's no current item
- // the next time it's opened.
- if (contentItem->property("currentIndex").isValid())
- contentItem->setProperty("currentIndex", -1);
-
- // The menu items are sneaky and will steal the focus if they can.
- for (int i = 0; i < contentModel->count(); ++i) {
- QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->get(i));
- item->setFocus(false);
- }
- }
-
+ QVariant index = contentItem->property("currentIndex");
+ if (!index.isValid())
+ return -1;
+ return index.toInt();
}
-void QQuickMenuPrivate::maybeUnsetDummyFocusOnTab()
+void QQuickMenuPrivate::setCurrentIndex(int index)
{
- if (!dummyFocusItem->hasActiveFocus()) {
- // Only unset the flag once the dummy item no longer has focus, otherwise we get warnings.
- dummyFocusItem->setActiveFocusOnTab(false);
- }
+ contentItem->setProperty("currentIndex", index);
}
void QQuickMenuPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj)
@@ -265,7 +229,7 @@ void QQuickMenuPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObj
if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) {
QQuickItemPrivate::get(item)->addItemChangeListener(p, QQuickItemPrivate::SiblingOrder);
item->setParentItem(p->contentItem);
- } else if (p->contentModel->indexOf(item, Q_NULLPTR) == -1) {
+ } else if (p->contentModel->indexOf(item, nullptr) == -1) {
q->addItem(item);
QQuickMenuItem *menuItem = qobject_cast<QQuickMenuItem *>(item);
@@ -301,9 +265,8 @@ void QQuickMenuPrivate::contentData_clear(QQmlListProperty<QObject> *prop)
QQuickMenu::QQuickMenu(QObject *parent) :
QQuickPopup(*(new QQuickMenuPrivate), parent)
{
- Q_D(QQuickMenu);
+ setFocus(true);
setClosePolicy(OnEscape | OnPressOutside | OnReleaseOutside);
- QObjectPrivate::connect(this, &QQuickMenu::visibleChanged, d, &QQuickMenuPrivate::onMenuVisibleChanged);
}
/*!
@@ -342,7 +305,7 @@ void QQuickMenu::insertItem(int index, QQuickItem *item)
if (index < 0 || index > count)
index = count;
- int oldIndex = d->contentModel->indexOf(item, Q_NULLPTR);
+ int oldIndex = d->contentModel->indexOf(item, nullptr);
if (oldIndex != -1) {
if (oldIndex < index)
--index;
@@ -455,43 +418,37 @@ void QQuickMenu::componentComplete()
void QQuickMenu::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
{
Q_D(QQuickMenu);
+ Q_UNUSED(oldItem);
QQuickPopup::contentItemChange(newItem, oldItem);
- if (oldItem) {
- oldItem->removeEventFilter(this);
- if (d->dummyFocusItem)
- QObjectPrivate::disconnect(d->dummyFocusItem.data(), &QQuickItem::activeFocusChanged, d, &QQuickMenuPrivate::maybeUnsetDummyFocusOnTab);
- }
+ d->contentItem = newItem;
+}
- if (newItem) {
- newItem->installEventFilter(this);
- newItem->setFlag(QQuickItem::ItemIsFocusScope);
- newItem->setActiveFocusOnTab(true);
-
- // Trying to give active focus to the contentItem (ListView, by default)
- // when the menu first opens, without also giving it to the first delegate item
- // doesn't seem to be possible, but this is what we need to do. QMenu behaves
- // similarly to this; it receives focus if a button that has it as a menu is clicked,
- // and only after pressing tab is the first menu item then given active focus.
- if (!d->dummyFocusItem) {
- d->dummyFocusItem = new QQuickItem(newItem);
- d->dummyFocusItem->setObjectName(QStringLiteral("dummyMenuFocusItem"));
- } else {
- d->dummyFocusItem->setParentItem(newItem);
+void QQuickMenu::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
+{
+ Q_D(QQuickMenu);
+ QQuickPopup::itemChange(change, data);
+
+ if (change == QQuickItem::ItemVisibleHasChanged) {
+ if (!data.boolValue) {
+ // Ensure that when the menu isn't visible, there's no current item
+ // the next time it's opened.
+ QQuickItem *focusItem = QQuickItemPrivate::get(d->contentItem)->subFocusItem;
+ if (focusItem) {
+ QQuickWindow *window = QQuickPopup::window();
+ if (window)
+ QQuickWindowPrivate::get(window)->clearFocusInScope(d->contentItem, focusItem, Qt::OtherFocusReason);
+ }
+ d->setCurrentIndex(-1);
}
-
- d->dummyFocusItem->setActiveFocusOnTab(true);
- d->dummyFocusItem->stackBefore(newItem->childItems().first());
-
- QObjectPrivate::connect(d->dummyFocusItem.data(), &QQuickItem::activeFocusChanged, d, &QQuickMenuPrivate::maybeUnsetDummyFocusOnTab);
}
- d->contentItem = newItem;
}
-bool QQuickMenu::eventFilter(QObject *object, QEvent *event)
+void QQuickMenu::keyReleaseEvent(QKeyEvent *event)
{
Q_D(QQuickMenu);
- if (object != d->contentItem || event->type() != QEvent::KeyRelease || d->contentModel->count() == 0)
- return QQuickPopup::eventFilter(object, event);
+ QQuickPopup::keyReleaseEvent(event);
+ if (d->contentModel->count() == 0)
+ return;
// QTBUG-17051
// Work around the fact that ListView has no way of distinguishing between
@@ -499,23 +456,25 @@ bool QQuickMenu::eventFilter(QObject *object, QEvent *event)
// What we actually want is to have a way to always allow keyboard interaction but
// only allow flicking with the mouse when there are too many menu items to be
// shown at once.
- QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
- switch (keyEvent->key()) {
+ switch (event->key()) {
case Qt::Key_Up:
if (d->contentItem->metaObject()->indexOfMethod("decrementCurrentIndex()") != -1)
QMetaObject::invokeMethod(d->contentItem, "decrementCurrentIndex");
- return true;
+ break;
case Qt::Key_Down:
if (d->contentItem->metaObject()->indexOfMethod("incrementCurrentIndex()") != -1)
QMetaObject::invokeMethod(d->contentItem, "incrementCurrentIndex");
- return true;
+ break;
default:
break;
}
- return QQuickPopup::eventFilter(object, event);
+ int index = d->currentIndex();
+ QQuickItem *item = itemAt(index);
+ if (item)
+ item->forceActiveFocus();
}
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/templates/qquickmenu_p.h b/src/templates/qquickmenu_p.h
index b70ca49f..c6ee52c8 100644
--- a/src/templates/qquickmenu_p.h
+++ b/src/templates/qquickmenu_p.h
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
class QQuickMenuItem;
class QQuickMenuPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickMenu : public QQuickPopup
+class Q_QUICKTEMPLATES_EXPORT QQuickMenu : public QQuickPopup
{
Q_OBJECT
Q_PROPERTY(QVariant contentModel READ contentModel CONSTANT FINAL)
@@ -67,7 +67,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickMenu : public QQuickPopup
Q_CLASSINFO("DefaultProperty", "contentData")
public:
- explicit QQuickMenu(QObject *parent = Q_NULLPTR);
+ explicit QQuickMenu(QObject *parent = nullptr);
Q_INVOKABLE QQuickItem *itemAt(int index) const;
Q_INVOKABLE void addItem(QQuickItem *item);
@@ -82,16 +82,17 @@ public:
void setTitle(QString &title);
protected:
- void componentComplete() Q_DECL_OVERRIDE;
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
- bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE;
+ void componentComplete() override;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
+ void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
Q_SIGNALS:
void titleChanged();
protected:
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif // QT_NO_ACCESSIBILITY
private:
diff --git a/src/templates/qquickmenu_p_p.h b/src/templates/qquickmenu_p_p.h
index 4c2aed16..70230262 100644
--- a/src/templates/qquickmenu_p_p.h
+++ b/src/templates/qquickmenu_p_p.h
@@ -52,13 +52,13 @@
#include <QtCore/qpointer.h>
#include <QtQuick/private/qquickitemchangelistener_p.h>
-#include <QtLabsTemplates/private/qquickpopup_p_p.h>
+#include <QtQuickTemplates/private/qquickpopup_p_p.h>
QT_BEGIN_NAMESPACE
class QQmlObjectModel;
-class Q_LABSTEMPLATES_EXPORT QQuickMenuPrivate : public QQuickPopupPrivate, public QQuickItemChangeListener
+class Q_QUICKTEMPLATES_EXPORT QQuickMenuPrivate : public QQuickPopupPrivate, public QQuickItemChangeListener
{
Q_DECLARE_PUBLIC(QQuickMenu)
@@ -73,16 +73,17 @@ public:
void resizeItem(QQuickItem *item);
void resizeItems();
- void itemChildAdded(QQuickItem *item, QQuickItem *child) Q_DECL_OVERRIDE;
- void itemSiblingOrderChanged(QQuickItem *item) Q_DECL_OVERRIDE;
- void itemParentChanged(QQuickItem *item, QQuickItem *parent) Q_DECL_OVERRIDE;
- void itemDestroyed(QQuickItem *item) Q_DECL_OVERRIDE;
- void itemGeometryChanged(QQuickItem *, const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void itemChildAdded(QQuickItem *item, QQuickItem *child) override;
+ void itemSiblingOrderChanged(QQuickItem *item) override;
+ void itemParentChanged(QQuickItem *item, QQuickItem *parent) override;
+ void itemDestroyed(QQuickItem *item) override;
+ void itemGeometryChanged(QQuickItem *, const QRectF &newGeometry, const QRectF &oldGeometry) override;
void onItemPressed();
void onItemActiveFocusChanged();
- void onMenuVisibleChanged();
- void maybeUnsetDummyFocusOnTab();
+
+ int currentIndex() const;
+ void setCurrentIndex(int index);
static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj);
static int contentData_count(QQmlListProperty<QObject> *prop);
@@ -92,8 +93,6 @@ public:
QQuickItem *contentItem; // TODO: cleanup
QVector<QObject *> contentData;
QQmlObjectModel *contentModel;
- QPointer<QQuickItem> dummyFocusItem;
- bool ignoreActiveFocusChanges;
QString title;
};
diff --git a/src/templates/qquickmenuitem_p.h b/src/templates/qquickmenuitem_p.h
index 91d1e91e..d73e1081 100644
--- a/src/templates/qquickmenuitem_p.h
+++ b/src/templates/qquickmenuitem_p.h
@@ -48,27 +48,27 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
class QQuickMenuItemPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickMenuItem : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickMenuItem : public QQuickAbstractButton
{
Q_OBJECT
public:
- explicit QQuickMenuItem(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickMenuItem(QQuickItem *parent = nullptr);
Q_SIGNALS:
void triggered();
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickoverlay.cpp b/src/templates/qquickoverlay.cpp
index cce10e46..8af5cb88 100644
--- a/src/templates/qquickoverlay.cpp
+++ b/src/templates/qquickoverlay.cpp
@@ -109,7 +109,7 @@ void QQuickOverlayPrivate::resizeBackground()
}
QQuickOverlayPrivate::QQuickOverlayPrivate() :
- background(Q_NULLPTR),
+ background(nullptr),
modalPopups(0)
{
}
@@ -132,19 +132,20 @@ QQuickItem *QQuickOverlay::background() const
void QQuickOverlay::setBackground(QQuickItem *background)
{
Q_D(QQuickOverlay);
- if (d->background != background) {
- delete d->background;
- d->background = background;
- if (background) {
- background->setOpacity(0.0);
- background->setParentItem(this);
- if (qFuzzyIsNull(background->z()))
- background->setZ(-1);
- if (isComponentComplete())
- d->resizeBackground();
- }
- emit backgroundChanged();
+ if (d->background == background)
+ return;
+
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setOpacity(0.0);
+ background->setParentItem(this);
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
+ if (isComponentComplete())
+ d->resizeBackground();
}
+ emit backgroundChanged();
}
void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data)
@@ -152,7 +153,7 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data)
Q_D(QQuickOverlay);
QQuickItem::itemChange(change, data);
- QQuickPopup *popup = Q_NULLPTR;
+ QQuickPopup *popup = nullptr;
if (change == ItemChildAddedChange || change == ItemChildRemovedChange) {
QQuickDrawer *drawer = qobject_cast<QQuickDrawer *>(data.item);
if (drawer) {
@@ -196,52 +197,26 @@ void QQuickOverlay::geometryChanged(const QRectF &newGeometry, const QRectF &old
d->resizeBackground();
}
-void QQuickOverlay::keyPressEvent(QKeyEvent *event)
-{
- Q_D(QQuickOverlay);
- event->setAccepted(d->modalPopups > 0);
-}
-
-void QQuickOverlay::keyReleaseEvent(QKeyEvent *event)
+bool QQuickOverlay::event(QEvent *event)
{
Q_D(QQuickOverlay);
- event->setAccepted(d->modalPopups > 0);
-}
-
-void QQuickOverlay::mousePressEvent(QMouseEvent *event)
-{
- Q_D(QQuickOverlay);
- event->setAccepted(d->modalPopups > 0);
- emit pressed();
-
- for (int i = d->popups.count() - 1; i >= 0; --i) {
- if (QQuickPopupPrivate::get(d->popups.at(i))->tryClose(this, event))
- break;
+ switch (event->type()) {
+ case QEvent::MouseButtonPress:
+ emit pressed();
+ break;
+ case QEvent::MouseButtonRelease:
+ emit released();
+ break;
+ default:
+ break;
}
-}
-void QQuickOverlay::mouseMoveEvent(QMouseEvent *event)
-{
- Q_D(QQuickOverlay);
- event->setAccepted(d->modalPopups > 0);
-}
-
-void QQuickOverlay::mouseReleaseEvent(QMouseEvent *event)
-{
- Q_D(QQuickOverlay);
- event->setAccepted(d->modalPopups > 0);
- emit released();
-
- for (int i = d->popups.count() - 1; i >= 0; --i) {
- if (QQuickPopupPrivate::get(d->popups.at(i))->tryClose(this, event))
- break;
+ for (auto it = d->popups.crbegin(), end = d->popups.crend(); it != end; ++it) {
+ if ((*it)->overlayEvent(this, event))
+ return true;
}
-}
-void QQuickOverlay::wheelEvent(QWheelEvent *event)
-{
- Q_D(QQuickOverlay);
- event->setAccepted(d->modalPopups > 0);
+ return QQuickItem::event(event);
}
bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event)
@@ -255,26 +230,18 @@ bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event)
while (item->parentItem() != this)
item = item->parentItem();
- bool modalBlocked = false;
- const QQuickItemPrivate *priv = QQuickItemPrivate::get(this);
- const QList<QQuickItem *> &sortedChildren = priv->paintOrderChildItems();
- for (int i = sortedChildren.count() - 1; i >= 0; --i) {
- QQuickItem *popupItem = sortedChildren[i];
+ const QList<QQuickItem *> sortedChildren = d->paintOrderChildItems();
+ for (auto it = sortedChildren.rbegin(), end = sortedChildren.rend(); it != end; ++it) {
+ QQuickItem *popupItem = *it;
if (popupItem == item)
break;
QQuickPopup *popup = qobject_cast<QQuickPopup *>(popupItem->parent());
- if (popup) {
- QQuickPopup::ClosePolicy policy = popup->closePolicy();
- if (policy.testFlag(QQuickPopup::OnPressOutside) || policy.testFlag(QQuickPopup::OnPressOutsideParent))
- popup->close();
-
- if (!modalBlocked && popup->isModal())
- modalBlocked = true;
- }
+ if (popup && popup->overlayEvent(item, event))
+ return true;
}
- return modalBlocked;
+ return false;
}
QT_END_NAMESPACE
diff --git a/src/templates/qquickoverlay_p.h b/src/templates/qquickoverlay_p.h
index 6a4d56b3..3aed5a82 100644
--- a/src/templates/qquickoverlay_p.h
+++ b/src/templates/qquickoverlay_p.h
@@ -49,19 +49,19 @@
//
#include <QtQuick/qquickitem.h>
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
class QQuickOverlayPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickOverlay : public QQuickItem
+class Q_QUICKTEMPLATES_EXPORT QQuickOverlay : public QQuickItem
{
Q_OBJECT
Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
public:
- explicit QQuickOverlay(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickOverlay(QQuickItem *parent = nullptr);
QQuickItem *background() const;
void setBackground(QQuickItem *background);
@@ -72,16 +72,11 @@ Q_SIGNALS:
void released();
protected:
- void itemChange(ItemChange change, const ItemChangeData &data) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &oldGeometry, const QRectF &newGeometry) Q_DECL_OVERRIDE;
+ void itemChange(ItemChange change, const ItemChangeData &data) override;
+ void geometryChanged(const QRectF &oldGeometry, const QRectF &newGeometry) override;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
- bool childMouseEventFilter(QQuickItem *item, QEvent *event) Q_DECL_OVERRIDE;
+ bool event(QEvent *event) override;
+ bool childMouseEventFilter(QQuickItem *item, QEvent *event) override;
private:
Q_DISABLE_COPY(QQuickOverlay)
diff --git a/src/templates/qquickpage.cpp b/src/templates/qquickpage.cpp
index 6a65e7c4..edd10e1b 100644
--- a/src/templates/qquickpage.cpp
+++ b/src/templates/qquickpage.cpp
@@ -36,6 +36,8 @@
#include "qquickpage_p.h"
#include "qquickcontrol_p_p.h"
+#include "qquicktoolbar_p.h"
+#include "qquicktabbar_p.h"
#include <QtQuick/private/qquickitemchangelistener_p.h>
@@ -47,12 +49,12 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickPage
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-containers
- \brief A page control.
+ \brief A control that makes it convenient to add a header and footer to a page.
Page is a container control which makes it convenient to add
a \l header and \l footer item to a page.
- \image qtlabscontrols-page-wireframe.png
+ \image qtquickcontrols-page-wireframe.png
The following example snippet illustrates how to use a page-specific
toolbar header and an application-wide tabbar footer.
@@ -91,14 +93,14 @@ public:
void relayout();
- void itemImplicitWidthChanged(QQuickItem *item) Q_DECL_OVERRIDE;
- void itemImplicitHeightChanged(QQuickItem *item) Q_DECL_OVERRIDE;
+ void itemImplicitWidthChanged(QQuickItem *item) override;
+ void itemImplicitHeightChanged(QQuickItem *item) override;
QQuickItem *header;
QQuickItem *footer;
};
-QQuickPagePrivate::QQuickPagePrivate() : header(Q_NULLPTR), footer(Q_NULLPTR)
+QQuickPagePrivate::QQuickPagePrivate() : header(nullptr), footer(nullptr)
{
}
@@ -148,6 +150,9 @@ QQuickPage::QQuickPage(QQuickItem *parent) :
This property holds the page header item. The header item is positioned to
the top, and resized to the width of the page. The default value is \c null.
+ \note Assigning a ToolBar or TabBar as a page header sets the respective
+ \l ToolBar::position or \l TabBar::position property automatically to \c Header.
+
\sa footer, ApplicationWindow::header
*/
QQuickItem *QQuickPage::header() const
@@ -159,23 +164,28 @@ QQuickItem *QQuickPage::header() const
void QQuickPage::setHeader(QQuickItem *header)
{
Q_D(QQuickPage);
- if (d->header != header) {
- if (d->header) {
- QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- d->header->setParentItem(Q_NULLPTR);
- }
- d->header = header;
- if (header) {
- header->setParentItem(this);
- QQuickItemPrivate *p = QQuickItemPrivate::get(header);
- p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- if (qFuzzyIsNull(header->z()))
- header->setZ(1);
- if (isComponentComplete())
- d->relayout();
- }
- emit headerChanged();
+ if (d->header == header)
+ return;
+
+ if (d->header) {
+ QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ d->header->setParentItem(nullptr);
+ }
+ d->header = header;
+ if (header) {
+ header->setParentItem(this);
+ QQuickItemPrivate *p = QQuickItemPrivate::get(header);
+ p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ if (qFuzzyIsNull(header->z()))
+ header->setZ(1);
+ if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(header))
+ toolBar->setPosition(QQuickToolBar::Header);
+ else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(header))
+ tabBar->setPosition(QQuickTabBar::Header);
+ if (isComponentComplete())
+ d->relayout();
}
+ emit headerChanged();
}
/*!
@@ -184,6 +194,9 @@ void QQuickPage::setHeader(QQuickItem *header)
This property holds the page footer item. The footer item is positioned to
the bottom, and resized to the width of the page. The default value is \c null.
+ \note Assigning a ToolBar or TabBar as a page footer sets the respective
+ \l ToolBar::position or \l TabBar::position property automatically to \c Footer.
+
\sa header, ApplicationWindow::footer
*/
QQuickItem *QQuickPage::footer() const
@@ -195,23 +208,28 @@ QQuickItem *QQuickPage::footer() const
void QQuickPage::setFooter(QQuickItem *footer)
{
Q_D(QQuickPage);
- if (d->footer != footer) {
- if (d->footer) {
- QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- d->footer->setParentItem(Q_NULLPTR);
- }
- d->footer = footer;
- if (footer) {
- footer->setParentItem(this);
- QQuickItemPrivate *p = QQuickItemPrivate::get(footer);
- p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
- if (qFuzzyIsNull(footer->z()))
- footer->setZ(1);
- if (isComponentComplete())
- d->relayout();
- }
- emit footerChanged();
+ if (d->footer == footer)
+ return;
+
+ if (d->footer) {
+ QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ d->footer->setParentItem(nullptr);
+ }
+ d->footer = footer;
+ if (footer) {
+ footer->setParentItem(this);
+ QQuickItemPrivate *p = QQuickItemPrivate::get(footer);
+ p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight);
+ if (qFuzzyIsNull(footer->z()))
+ footer->setZ(1);
+ if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(footer))
+ toolBar->setPosition(QQuickToolBar::Footer);
+ else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(footer))
+ tabBar->setPosition(QQuickTabBar::Footer);
+ if (isComponentComplete())
+ d->relayout();
}
+ emit footerChanged();
}
/*!
@@ -225,7 +243,7 @@ void QQuickPage::setFooter(QQuickItem *footer)
QQmlListProperty<QObject> QQuickPage::contentData()
{
Q_D(QQuickPage);
- return QQmlListProperty<QObject>(d->contentItem, Q_NULLPTR,
+ return QQmlListProperty<QObject>(d->contentItem, nullptr,
QQuickItemPrivate::data_append,
QQuickItemPrivate::data_count,
QQuickItemPrivate::data_at,
@@ -242,7 +260,7 @@ QQmlListProperty<QObject> QQuickPage::contentData()
QQmlListProperty<QQuickItem> QQuickPage::contentChildren()
{
Q_D(QQuickPage);
- return QQmlListProperty<QQuickItem>(d->contentItem, Q_NULLPTR,
+ return QQmlListProperty<QQuickItem>(d->contentItem, nullptr,
QQuickItemPrivate::children_append,
QQuickItemPrivate::children_count,
QQuickItemPrivate::children_at,
diff --git a/src/templates/qquickpage_p.h b/src/templates/qquickpage_p.h
index 157f0507..b9e45c77 100644
--- a/src/templates/qquickpage_p.h
+++ b/src/templates/qquickpage_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
#include <QtQml/qqmllist.h>
QT_BEGIN_NAMESPACE
class QQuickPagePrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickPage : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickPage : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL)
@@ -65,7 +65,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickPage : public QQuickControl
Q_CLASSINFO("DefaultProperty", "contentData")
public:
- explicit QQuickPage(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickPage(QQuickItem *parent = nullptr);
QQuickItem *header() const;
void setHeader(QQuickItem *header);
@@ -82,12 +82,12 @@ Q_SIGNALS:
void contentChildrenChanged();
protected:
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickpageindicator.cpp b/src/templates/qquickpageindicator.cpp
index a360627e..df5517ea 100644
--- a/src/templates/qquickpageindicator.cpp
+++ b/src/templates/qquickpageindicator.cpp
@@ -49,15 +49,15 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickPageIndicator
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-indicators
- \brief A page indicator control.
+ \brief Indicates the currently active page.
PageIndicator is used to indicate the currently active page
in a container of multiple pages. PageIndicator consists of
delegate items that present pages.
- \image qtlabscontrols-pageindicator.png
+ \image qtquickcontrols-pageindicator.png
- \snippet qtlabscontrols-pageindicator.qml 1
+ \snippet qtquickcontrols-pageindicator.qml 1
\labs
@@ -70,7 +70,7 @@ class QQuickPageIndicatorPrivate : public QQuickControlPrivate, public QQuickIte
public:
QQuickPageIndicatorPrivate() : count(0), currentIndex(0),
- interactive(false), delegate(Q_NULLPTR), pressedItem(Q_NULLPTR)
+ interactive(false), delegate(nullptr), pressedItem(nullptr)
{
}
@@ -91,7 +91,7 @@ QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPoint &pos) const
{
Q_Q(const QQuickPageIndicator);
if (!contentItem || !q->contains(pos))
- return Q_NULLPTR;
+ return nullptr;
QPointF contentPos = q->mapToItem(contentItem, pos);
QQuickItem *item = contentItem->childAt(contentPos.x(), contentPos.y());
@@ -102,8 +102,9 @@ QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPoint &pos) const
// find the nearest
qreal distance = qInf();
- QQuickItem *nearest = Q_NULLPTR;
- foreach (QQuickItem *child, contentItem->childItems()) {
+ QQuickItem *nearest = nullptr;
+ const auto childItems = contentItem->childItems();
+ for (QQuickItem *child : childItems) {
if (QQuickItemPrivate::get(child)->isTransparentForPositioner())
continue;
@@ -122,7 +123,7 @@ QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPoint &pos) const
void QQuickPageIndicatorPrivate::updatePressed(bool pressed, const QPoint &pos)
{
QQuickItem *prevItem = pressedItem;
- pressedItem = pressed ? itemAt(pos) : Q_NULLPTR;
+ pressedItem = pressed ? itemAt(pos) : nullptr;
if (prevItem != pressedItem) {
setContextProperty(prevItem, QStringLiteral("pressed"), false);
setContextProperty(pressedItem, QStringLiteral("pressed"), pressed);
@@ -164,10 +165,11 @@ int QQuickPageIndicator::count() const
void QQuickPageIndicator::setCount(int count)
{
Q_D(QQuickPageIndicator);
- if (d->count != count) {
- d->count = count;
- emit countChanged();
- }
+ if (d->count == count)
+ return;
+
+ d->count = count;
+ emit countChanged();
}
/*!
@@ -184,10 +186,11 @@ int QQuickPageIndicator::currentIndex() const
void QQuickPageIndicator::setCurrentIndex(int index)
{
Q_D(QQuickPageIndicator);
- if (d->currentIndex != index) {
- d->currentIndex = index;
- emit currentIndexChanged();
- }
+ if (d->currentIndex == index)
+ return;
+
+ d->currentIndex = index;
+ emit currentIndexChanged();
}
/*!
@@ -208,11 +211,12 @@ bool QQuickPageIndicator::isInteractive() const
void QQuickPageIndicator::setInteractive(bool interactive)
{
Q_D(QQuickPageIndicator);
- if (d->interactive != interactive) {
- d->interactive = interactive;
- setAcceptedMouseButtons(interactive ? Qt::LeftButton : Qt::NoButton);
- emit interactiveChanged();
- }
+ if (d->interactive == interactive)
+ return;
+
+ d->interactive = interactive;
+ setAcceptedMouseButtons(interactive ? Qt::LeftButton : Qt::NoButton);
+ emit interactiveChanged();
}
/*!
@@ -235,10 +239,11 @@ QQmlComponent *QQuickPageIndicator::delegate() const
void QQuickPageIndicator::setDelegate(QQmlComponent *delegate)
{
Q_D(QQuickPageIndicator);
- if (d->delegate != delegate) {
- d->delegate = delegate;
- emit delegateChanged();
- }
+ if (d->delegate == delegate)
+ return;
+
+ d->delegate = delegate;
+ emit delegateChanged();
}
void QQuickPageIndicator::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
diff --git a/src/templates/qquickpageindicator_p.h b/src/templates/qquickpageindicator_p.h
index 487b4d6e..d94e470a 100644
--- a/src/templates/qquickpageindicator_p.h
+++ b/src/templates/qquickpageindicator_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQmlComponent;
class QQuickPageIndicatorPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickPageIndicator : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickPageIndicator : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(int count READ count WRITE setCount NOTIFY countChanged FINAL)
@@ -64,7 +64,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickPageIndicator : public QQuickControl
Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL)
public:
- explicit QQuickPageIndicator(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickPageIndicator(QQuickItem *parent = nullptr);
int count() const;
void setCount(int count);
@@ -85,15 +85,15 @@ Q_SIGNALS:
void delegateChanged();
protected:
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickpane.cpp b/src/templates/qquickpane.cpp
index 9bedb150..5ebf02a7 100644
--- a/src/templates/qquickpane.cpp
+++ b/src/templates/qquickpane.cpp
@@ -45,20 +45,24 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickPane
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-containers
- \brief A pane control.
+ \brief Provides a background matching with the application style and theme.
Pane provides a background color that matches with the application style
and theme. Pane does not provide a layout of its own, but requires you to
position its contents, for instance by creating a \l RowLayout or a
\l ColumnLayout.
+ Items declared as children of a Pane are automatically parented to the
+ Pane's contentItem. Items created dynamically need to be explicitly
+ parented to the contentItem.
+
If only a single item is used within a Pane, it will resize to fit the
implicit size of its contained item. This makes it particularly suitable
for use together with layouts.
- \image qtlabscontrols-pane.png
+ \image qtquickcontrols-pane.png
- \snippet qtlabscontrols-pane.qml 1
+ \snippet qtquickcontrols-pane.qml 1
\labs
@@ -101,10 +105,11 @@ qreal QQuickPane::contentWidth() const
void QQuickPane::setContentWidth(qreal width)
{
Q_D(QQuickPane);
- if (d->contentWidth != width) {
- d->contentWidth = width;
- emit contentWidthChanged();
- }
+ if (qFuzzyCompare(d->contentWidth, width))
+ return;
+
+ d->contentWidth = width;
+ emit contentWidthChanged();
}
/*!
@@ -125,10 +130,11 @@ qreal QQuickPane::contentHeight() const
void QQuickPane::setContentHeight(qreal height)
{
Q_D(QQuickPane);
- if (d->contentHeight != height) {
- d->contentHeight = height;
- emit contentHeightChanged();
- }
+ if (qFuzzyCompare(d->contentHeight, height))
+ return;
+
+ d->contentHeight = height;
+ emit contentHeightChanged();
}
/*!
@@ -142,7 +148,7 @@ void QQuickPane::setContentHeight(qreal height)
QQmlListProperty<QObject> QQuickPane::contentData()
{
Q_D(QQuickPane);
- return QQmlListProperty<QObject>(d->contentItem, Q_NULLPTR,
+ return QQmlListProperty<QObject>(d->contentItem, nullptr,
QQuickItemPrivate::data_append,
QQuickItemPrivate::data_count,
QQuickItemPrivate::data_at,
@@ -159,7 +165,7 @@ QQmlListProperty<QObject> QQuickPane::contentData()
QQmlListProperty<QQuickItem> QQuickPane::contentChildren()
{
Q_D(QQuickPane);
- return QQmlListProperty<QQuickItem>(d->contentItem, Q_NULLPTR,
+ return QQmlListProperty<QQuickItem>(d->contentItem, nullptr,
QQuickItemPrivate::children_append,
QQuickItemPrivate::children_count,
QQuickItemPrivate::children_at,
diff --git a/src/templates/qquickpane_p.h b/src/templates/qquickpane_p.h
index e599f55f..c3529bf4 100644
--- a/src/templates/qquickpane_p.h
+++ b/src/templates/qquickpane_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
#include <QtQml/qqmllist.h>
QT_BEGIN_NAMESPACE
class QQuickPanePrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickPane : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickPane : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged FINAL)
@@ -65,7 +65,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickPane : public QQuickControl
Q_CLASSINFO("DefaultProperty", "contentData")
public:
- explicit QQuickPane(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickPane(QQuickItem *parent = nullptr);
qreal contentWidth() const;
void setContentWidth(qreal width);
@@ -84,10 +84,10 @@ Q_SIGNALS:
protected:
QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent);
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickpane_p_p.h b/src/templates/qquickpane_p_p.h
index 477dc0bc..34feff07 100644
--- a/src/templates/qquickpane_p_p.h
+++ b/src/templates/qquickpane_p_p.h
@@ -48,13 +48,13 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
QT_BEGIN_NAMESPACE
class QQuickPane;
-class Q_LABSTEMPLATES_EXPORT QQuickPanePrivate : public QQuickControlPrivate
+class Q_QUICKTEMPLATES_EXPORT QQuickPanePrivate : public QQuickControlPrivate
{
Q_DECLARE_PUBLIC(QQuickPane)
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index ef092bed..5589b095 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickPopup
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-popups
- \brief A popup control.
+ \brief The base type of popup-like user interface controls.
Popup is the base type of popup-like user interface controls. It can be
used with Window or ApplicationWindow.
@@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE
height: 300
modal: true
focus: true
- closePolicy: Popup.OnEscape | Popup.OnPressOutside
+ closePolicy: Popup.OnEscape | Popup.OnPressOutsideParent
}
}
\endqml
@@ -105,11 +105,14 @@ QQuickPopupPrivate::QQuickPopupPrivate()
: QObjectPrivate()
, focus(false)
, modal(false)
+ , visible(false)
, complete(false)
, hasTopMargin(false)
, hasLeftMargin(false)
, hasRightMargin(false)
, hasBottomMargin(false)
+ , x(0)
+ , y(0)
, margins(0)
, topMargin(0)
, leftMargin(0)
@@ -117,11 +120,11 @@ QQuickPopupPrivate::QQuickPopupPrivate()
, bottomMargin(0)
, contentWidth(0)
, contentHeight(0)
- , closePolicy(QQuickPopup::OnEscape)
- , parentItem(Q_NULLPTR)
- , enter(Q_NULLPTR)
- , exit(Q_NULLPTR)
- , popupItem(Q_NULLPTR)
+ , closePolicy(QQuickPopup::OnEscape | QQuickPopup::OnPressOutside)
+ , parentItem(nullptr)
+ , enter(nullptr)
+ , exit(nullptr)
+ , popupItem(nullptr)
, positioner(this)
, transitionManager(this)
{
@@ -158,17 +161,60 @@ bool QQuickPopupPrivate::tryClose(QQuickItem *item, QMouseEvent *event)
return false;
}
+void QQuickPopupPrivate::prepareEnterTransition(bool notify)
+{
+ Q_Q(QQuickPopup);
+ QQuickWindow *quickWindow = q->window();
+ if (!quickWindow) {
+ qmlInfo(q) << "cannot find any window to open popup in.";
+ return;
+ }
+
+ QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(quickWindow);
+ if (!applicationWindow) {
+ quickWindow->installEventFilter(q);
+ popupItem->setZ(10001); // DefaultWindowDecoration+1
+ popupItem->setParentItem(quickWindow->contentItem());
+ } else {
+ popupItem->setParentItem(applicationWindow->overlay());
+ }
+
+ if (notify)
+ emit q->aboutToShow();
+ visible = true;
+ popupItem->setVisible(true);
+ positioner.setParentItem(parentItem);
+ emit q->visibleChanged();
+}
+
+void QQuickPopupPrivate::prepareExitTransition()
+{
+ Q_Q(QQuickPopup);
+ QQuickWindow *quickWindow = q->window();
+ if (quickWindow && !qobject_cast<QQuickApplicationWindow *>(quickWindow))
+ quickWindow->removeEventFilter(q);
+ if (focus)
+ popupItem->setFocus(false);
+ emit q->aboutToHide();
+}
+
void QQuickPopupPrivate::finalizeEnterTransition()
{
if (focus)
popupItem->setFocus(true);
}
-void QQuickPopupPrivate::finalizeExitTransition()
+void QQuickPopupPrivate::finalizeExitTransition(bool hide)
{
- positioner.setParentItem(Q_NULLPTR);
- popupItem->setParentItem(Q_NULLPTR);
- popupItem->setVisible(false);
+ Q_Q(QQuickPopup);
+ positioner.setParentItem(nullptr);
+ if (hide) {
+ popupItem->setParentItem(nullptr);
+ popupItem->setVisible(false);
+ }
+
+ visible = false;
+ emit q->visibleChanged();
}
QMarginsF QQuickPopupPrivate::getMargins() const
@@ -236,8 +282,10 @@ class QQuickPopupItemPrivate : public QQuickControlPrivate
public:
QQuickPopupItemPrivate(QQuickPopup *popup);
- void implicitWidthChanged() Q_DECL_OVERRIDE;
- void implicitHeightChanged() Q_DECL_OVERRIDE;
+ void implicitWidthChanged() override;
+ void implicitHeightChanged() override;
+
+ void resolveFont() override;
QQuickPopup *popup;
};
@@ -259,8 +307,14 @@ void QQuickPopupItemPrivate::implicitHeightChanged()
emit popup->implicitHeightChanged();
}
+void QQuickPopupItemPrivate::resolveFont()
+{
+ if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window()))
+ inheritFont(window->font());
+}
+
QQuickPopupItem::QQuickPopupItem(QQuickPopup *popup) :
- QQuickControl(*(new QQuickPopupItemPrivate(popup)), Q_NULLPTR)
+ QQuickControl(*(new QQuickPopupItemPrivate(popup)), nullptr)
{
setParent(popup);
setVisible(false);
@@ -268,6 +322,12 @@ QQuickPopupItem::QQuickPopupItem(QQuickPopup *popup) :
setAcceptedMouseButtons(Qt::AllButtons);
}
+bool QQuickPopupItem::childMouseEventFilter(QQuickItem *child, QEvent *event)
+{
+ Q_D(QQuickPopupItem);
+ return d->popup->childMouseEventFilter(child, event);
+}
+
void QQuickPopupItem::focusInEvent(QFocusEvent *event)
{
Q_D(QQuickPopupItem);
@@ -335,6 +395,13 @@ void QQuickPopupItem::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem
d->popup->contentItemChange(newItem, oldItem);
}
+void QQuickPopupItem::fontChange(const QFont &newFont, const QFont &oldFont)
+{
+ Q_D(QQuickPopupItem);
+ QQuickControl::fontChange(newFont, oldFont);
+ d->popup->fontChange(newFont, oldFont);
+}
+
void QQuickPopupItem::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickPopupItem);
@@ -342,23 +409,18 @@ void QQuickPopupItem::geometryChanged(const QRectF &newGeometry, const QRectF &o
d->popup->geometryChanged(newGeometry, oldGeometry);
}
+void QQuickPopupItem::localeChange(const QLocale &newLocale, const QLocale &oldLocale)
+{
+ Q_D(QQuickPopupItem);
+ QQuickControl::localeChange(newLocale, oldLocale);
+ d->popup->localeChange(newLocale, oldLocale);
+}
+
void QQuickPopupItem::itemChange(ItemChange change, const ItemChangeData &data)
{
Q_D(QQuickPopupItem);
QQuickControl::itemChange(change, data);
- switch (change) {
- case ItemVisibleHasChanged:
- emit d->popup->visibleChanged();
- break;
- case ItemActiveFocusHasChanged:
- emit d->popup->activeFocusChanged();
- break;
- case ItemOpacityHasChanged:
- emit d->popup->opacityChanged();
- break;
- default:
- break;
- }
+ d->popup->itemChange(change, data);
}
void QQuickPopupItem::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding)
@@ -368,6 +430,12 @@ void QQuickPopupItem::paddingChange(const QMarginsF &newPadding, const QMarginsF
d->popup->paddingChange(newPadding, oldPadding);
}
+QFont QQuickPopupItem::defaultFont() const
+{
+ Q_D(const QQuickPopupItem);
+ return d->popup->defaultFont();
+}
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role QQuickPopupItem::accessibleRole() const
{
@@ -377,9 +445,7 @@ QAccessible::Role QQuickPopupItem::accessibleRole() const
#endif // QT_NO_ACCESSIBILITY
QQuickPopupPositioner::QQuickPopupPositioner(QQuickPopupPrivate *popup) :
- m_x(0),
- m_y(0),
- m_parentItem(Q_NULLPTR),
+ m_parentItem(nullptr),
m_popup(popup)
{
}
@@ -392,34 +458,6 @@ QQuickPopupPositioner::~QQuickPopupPositioner()
}
}
-qreal QQuickPopupPositioner::x() const
-{
- return m_x;
-}
-
-void QQuickPopupPositioner::setX(qreal x)
-{
- if (m_x != x) {
- m_x = x;
- if (m_popup->popupItem->isVisible())
- repositionPopup();
- }
-}
-
-qreal QQuickPopupPositioner::y() const
-{
- return m_y;
-}
-
-void QQuickPopupPositioner::setY(qreal y)
-{
- if (m_y != y) {
- m_y = y;
- if (m_popup->popupItem->isVisible())
- repositionPopup();
- }
-}
-
QQuickItem *QQuickPopupPositioner::parentItem() const
{
return m_parentItem;
@@ -444,13 +482,13 @@ void QQuickPopupPositioner::setParentItem(QQuickItem *parent)
addAncestorListeners(parent->parentItem());
if (m_popup->popupItem->isVisible())
- repositionPopup();
+ m_popup->reposition();
}
void QQuickPopupPositioner::itemGeometryChanged(QQuickItem *, const QRectF &, const QRectF &)
{
- if (m_popup->popupItem->isVisible())
- repositionPopup();
+ if (m_parentItem && m_popup->popupItem->isVisible())
+ m_popup->reposition();
}
void QQuickPopupPositioner::itemParentChanged(QQuickItem *, QQuickItem *parent)
@@ -468,27 +506,28 @@ void QQuickPopupPositioner::itemDestroyed(QQuickItem *item)
{
Q_ASSERT(m_parentItem == item);
- m_parentItem = Q_NULLPTR;
- m_popup->parentItem = Q_NULLPTR;
+ m_parentItem = nullptr;
+ m_popup->parentItem = nullptr;
QQuickItemPrivate::get(item)->removeItemChangeListener(this, ItemChangeTypes);
removeAncestorListeners(item->parentItem());
}
-void QQuickPopupPositioner::repositionPopup()
+void QQuickPopupPrivate::reposition()
{
- const qreal w = m_popup->popupItem->width();
- const qreal h = m_popup->popupItem->height();
- const qreal iw = m_popup->popupItem->implicitWidth();
- const qreal ih = m_popup->popupItem->implicitHeight();
+ Q_Q(QQuickPopup);
+ const qreal w = popupItem->width();
+ const qreal h = popupItem->height();
+ const qreal iw = popupItem->implicitWidth();
+ const qreal ih = popupItem->implicitHeight();
bool adjusted = false;
- QRectF rect(m_x, m_y, iw > 0 ? iw : w, ih > 0 ? ih : h);
- if (m_parentItem) {
- rect = m_parentItem->mapRectToScene(rect);
+ QRectF rect(x, y, iw > 0 ? iw : w, ih > 0 ? ih : h);
+ if (parentItem) {
+ rect = parentItem->mapRectToScene(rect);
- QQuickWindow *window = m_parentItem->window();
+ QQuickWindow *window = q->window();
if (window) {
- const QMarginsF margins = m_popup->getMargins();
+ const QMarginsF margins = getMargins();
const QRectF bounds = QRectF(0, 0, window->width(), window->height()).marginsRemoved(margins);
// push inside the margins
@@ -503,7 +542,7 @@ void QQuickPopupPositioner::repositionPopup()
if (rect.top() < bounds.top() || rect.bottom() > bounds.bottom()) {
// if the popup doesn't fit inside the window, try flipping it around (below <-> above)
- const QRectF flipped = m_parentItem->mapRectToScene(QRectF(m_x, m_parentItem->height() - m_y - rect.height(), rect.width(), rect.height()));
+ const QRectF flipped = parentItem->mapRectToScene(QRectF(x, parentItem->height() - y - rect.height(), rect.width(), rect.height()));
if (flipped.top() >= bounds.top() && flipped.bottom() < bounds.bottom()) {
adjusted = true;
rect = flipped;
@@ -526,9 +565,9 @@ void QQuickPopupPositioner::repositionPopup()
}
}
- m_popup->popupItem->setPosition(rect.topLeft());
+ popupItem->setPosition(rect.topLeft());
if (adjusted && ih > 0)
- m_popup->popupItem->setHeight(rect.height());
+ popupItem->setHeight(rect.height());
}
void QQuickPopupPositioner::removeAncestorListeners(QQuickItem *item)
@@ -581,18 +620,20 @@ void QQuickPopupTransitionManager::transitionEnter()
{
if (state == Enter && isRunning())
return;
- QList<QQuickStateAction> actions;
+
state = Enter;
- transition(actions, popup->enter, popup->popupItem);
+ popup->prepareEnterTransition();
+ transition(popup->enterActions, popup->enter, popup->q_func());
}
void QQuickPopupTransitionManager::transitionExit()
{
if (state == Exit && isRunning())
return;
- QList<QQuickStateAction> actions;
+
state = Exit;
- transition(actions, popup->exit, popup->popupItem);
+ popup->prepareExitTransition();
+ transition(popup->exitActions, popup->exit, popup->q_func());
}
void QQuickPopupTransitionManager::finished()
@@ -622,7 +663,7 @@ QQuickPopup::QQuickPopup(QQuickPopupPrivate &dd, QObject *parent)
QQuickPopup::~QQuickPopup()
{
Q_D(QQuickPopup);
- d->positioner.setParentItem(Q_NULLPTR);
+ d->positioner.setParentItem(nullptr);
delete d->popupItem;
}
@@ -634,30 +675,11 @@ QQuickPopup::~QQuickPopup()
void QQuickPopup::open()
{
Q_D(QQuickPopup);
- if (d->popupItem->isVisible())
+ if (d->visible)
return;
- QQuickWindow *window = Q_NULLPTR;
- if (d->parentItem)
- window = d->parentItem->window();
- if (!window) {
- qmlInfo(this) << "cannot find any window to open popup in.";
- return;
- }
-
- QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(window);
- if (!applicationWindow) {
- window->installEventFilter(this);
- d->popupItem->setZ(10001); // DefaultWindowDecoration+1
- d->popupItem->setParentItem(window->contentItem());
- } else {
- d->popupItem->setParentItem(applicationWindow->overlay());
- }
-
- emit aboutToShow();
- d->popupItem->setVisible(true);
- d->positioner.setParentItem(d->parentItem);
- d->transitionManager.transitionEnter();
+ if (d->complete)
+ d->transitionManager.transitionEnter();
}
/*!
@@ -668,19 +690,11 @@ void QQuickPopup::open()
void QQuickPopup::close()
{
Q_D(QQuickPopup);
- if (!d->popupItem->isVisible())
+ if (!d->visible)
return;
- if (d->parentItem) {
- QQuickWindow *window = d->parentItem->window();
- if (!qobject_cast<QQuickApplicationWindow *>(window)) {
- window->removeEventFilter(this);
- }
- }
-
- d->popupItem->setFocus(false);
- emit aboutToHide();
- d->transitionManager.transitionExit();
+ if (d->complete)
+ d->transitionManager.transitionExit();
}
/*!
@@ -691,13 +705,19 @@ void QQuickPopup::close()
qreal QQuickPopup::x() const
{
Q_D(const QQuickPopup);
- return d->positioner.x();
+ return d->x;
}
void QQuickPopup::setX(qreal x)
{
Q_D(QQuickPopup);
- d->positioner.setX(x);
+ if (qFuzzyCompare(d->x, x))
+ return;
+
+ d->x = x;
+ if (d->popupItem->isVisible())
+ d->reposition();
+ emit xChanged();
}
/*!
@@ -708,13 +728,43 @@ void QQuickPopup::setX(qreal x)
qreal QQuickPopup::y() const
{
Q_D(const QQuickPopup);
- return d->positioner.y();
+ return d->y;
}
void QQuickPopup::setY(qreal y)
{
Q_D(QQuickPopup);
- d->positioner.setY(y);
+ if (qFuzzyCompare(d->y, y))
+ return;
+
+ d->y = y;
+ if (d->popupItem->isVisible())
+ d->reposition();
+ emit yChanged();
+}
+
+QPointF QQuickPopup::position() const
+{
+ Q_D(const QQuickPopup);
+ return QPointF(d->x, d->y);
+}
+
+void QQuickPopup::setPosition(const QPointF &pos)
+{
+ Q_D(QQuickPopup);
+ const bool xChange = !qFuzzyCompare(d->x, pos.x());
+ const bool yChange = !qFuzzyCompare(d->y, pos.y());
+ if (!xChange && !yChange)
+ return;
+
+ d->x = pos.x();
+ d->y = pos.y();
+ if (d->popupItem->isVisible())
+ d->reposition();
+ if (xChange)
+ emit xChanged();
+ if (yChange)
+ emit yChanged();
}
/*!
@@ -836,10 +886,11 @@ qreal QQuickPopup::contentWidth() const
void QQuickPopup::setContentWidth(qreal width)
{
Q_D(QQuickPopup);
- if (d->contentWidth != width) {
- d->contentWidth = width;
- emit contentWidthChanged();
- }
+ if (qFuzzyCompare(d->contentWidth, width))
+ return;
+
+ d->contentWidth = width;
+ emit contentWidthChanged();
}
/*!
@@ -860,10 +911,11 @@ qreal QQuickPopup::contentHeight() const
void QQuickPopup::setContentHeight(qreal height)
{
Q_D(QQuickPopup);
- if (d->contentHeight != height) {
- d->contentHeight = height;
- emit contentHeightChanged();
- }
+ if (qFuzzyCompare(d->contentHeight, height))
+ return;
+
+ d->contentHeight = height;
+ emit contentHeightChanged();
}
/*!
@@ -1165,6 +1217,63 @@ void QQuickPopup::resetBottomPadding()
d->popupItem->resetBottomPadding();
}
+/*!
+ \qmlproperty Locale Qt.labs.controls::Popup::locale
+
+ This property holds the locale of the popup.
+
+ \sa {LayoutMirroring}{LayoutMirroring}
+*/
+QLocale QQuickPopup::locale() const
+{
+ Q_D(const QQuickPopup);
+ return d->popupItem->locale();
+}
+
+void QQuickPopup::setLocale(const QLocale &locale)
+{
+ Q_D(QQuickPopup);
+ d->popupItem->setLocale(locale);
+}
+
+void QQuickPopup::resetLocale()
+{
+ Q_D(QQuickPopup);
+ d->popupItem->resetLocale();
+}
+
+/*!
+ \qmlproperty font Qt.labs.controls::Popup::font
+
+ This property holds the font currently set for the popup.
+*/
+QFont QQuickPopup::font() const
+{
+ Q_D(const QQuickPopup);
+ return d->popupItem->font();
+}
+
+void QQuickPopup::setFont(const QFont &font)
+{
+ Q_D(QQuickPopup);
+ d->popupItem->setFont(font);
+}
+
+void QQuickPopup::resetFont()
+{
+ Q_D(QQuickPopup);
+ d->popupItem->resetFont();
+}
+
+QQuickWindow *QQuickPopup::window() const
+{
+ Q_D(const QQuickPopup);
+ if (!d->parentItem)
+ return nullptr;
+
+ return d->parentItem->window();
+}
+
QQuickItem *QQuickPopup::popupItem() const
{
Q_D(const QQuickPopup);
@@ -1185,12 +1294,25 @@ QQuickItem *QQuickPopup::parentItem() const
void QQuickPopup::setParentItem(QQuickItem *parent)
{
Q_D(QQuickPopup);
- if (d->parentItem != parent) {
- d->parentItem = parent;
- if (d->positioner.parentItem())
- d->positioner.setParentItem(parent);
- emit parentChanged();
+ if (d->parentItem == parent)
+ return;
+
+ QQuickWindow *oldWindow = window();
+
+ d->parentItem = parent;
+ if (d->positioner.parentItem())
+ d->positioner.setParentItem(parent);
+ if (parent) {
+ QQuickControlPrivate *p = QQuickControlPrivate::get(d->popupItem);
+ p->resolveFont();
+ if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(parent->window()))
+ p->updateLocale(window->locale(), false); // explicit=false
}
+ emit parentChanged();
+
+ QQuickWindow *newWindow = window();
+ if (oldWindow != newWindow)
+ emit windowChanged(newWindow);
}
/*!
@@ -1251,7 +1373,7 @@ void QQuickPopup::setContentItem(QQuickItem *item)
QQmlListProperty<QObject> QQuickPopup::contentData()
{
Q_D(QQuickPopup);
- return QQmlListProperty<QObject>(d->popupItem->contentItem(), Q_NULLPTR,
+ return QQmlListProperty<QObject>(d->popupItem->contentItem(), nullptr,
QQuickItemPrivate::data_append,
QQuickItemPrivate::data_count,
QQuickItemPrivate::data_at,
@@ -1268,7 +1390,7 @@ QQmlListProperty<QObject> QQuickPopup::contentData()
QQmlListProperty<QQuickItem> QQuickPopup::contentChildren()
{
Q_D(QQuickPopup);
- return QQmlListProperty<QQuickItem>(d->popupItem->contentItem(), Q_NULLPTR,
+ return QQmlListProperty<QQuickItem>(d->popupItem->contentItem(), nullptr,
QQuickItemPrivate::children_append,
QQuickItemPrivate::children_count,
QQuickItemPrivate::children_at,
@@ -1355,15 +1477,22 @@ void QQuickPopup::setModal(bool modal)
bool QQuickPopup::isVisible() const
{
Q_D(const QQuickPopup);
- return d->popupItem->isVisible();
+ return d->visible && d->popupItem->isVisible();
}
void QQuickPopup::setVisible(bool visible)
{
- if (visible)
- open();
- else
- close();
+ Q_D(QQuickPopup);
+ if (d->visible == visible)
+ return;
+
+ d->visible = visible;
+ if (d->complete) {
+ if (visible)
+ d->transitionManager.transitionEnter();
+ else
+ d->transitionManager.transitionExit();
+ }
}
/*!
@@ -1418,7 +1547,7 @@ void QQuickPopup::setScale(qreal scale)
\value Popup.OnEscape The popup will close when the escape key is pressed while the popup
has active focus.
- The default value is \c Popup.OnEscape.
+ The default value is \c {Popup.OnEscape | Popup.OnPressOutside}.
*/
QQuickPopup::ClosePolicy QQuickPopup::closePolicy() const
{
@@ -1443,7 +1572,7 @@ void QQuickPopup::setClosePolicy(ClosePolicy policy)
Nine transform origins are available, as shown in the image below.
The default transform origin is \c Popup.Center.
- \image qtlabscontrols-popup-transformorigin.png
+ \image qtquickcontrols-popup-transformorigin.png
\sa enter, exit, Item::transformOrigin
*/
@@ -1501,18 +1630,16 @@ void QQuickPopup::setExit(QQuickTransition *transition)
emit exitChanged();
}
-/*!
- \qmlproperty list<Object> Qt.labs.controls::Popup::data
- \default
-
- This property holds the list of data.
+bool QQuickPopup::filtersChildMouseEvents() const
+{
+ Q_D(const QQuickPopup);
+ return d->popupItem->filtersChildMouseEvents();
+}
- \sa Item::data
-*/
-QQmlListProperty<QObject> QQuickPopup::data()
+void QQuickPopup::setFiltersChildMouseEvents(bool filter)
{
Q_D(QQuickPopup);
- return QQuickItemPrivate::get(d->popupItem)->data();
+ d->popupItem->setFiltersChildMouseEvents(filter);
}
void QQuickPopup::classBegin()
@@ -1525,6 +1652,8 @@ void QQuickPopup::componentComplete()
d->complete = true;
if (!parentItem())
setParentItem(qobject_cast<QQuickItem *>(parent()));
+ if (d->visible)
+ d->transitionManager.transitionEnter();
}
bool QQuickPopup::isComponentComplete() const
@@ -1535,28 +1664,16 @@ bool QQuickPopup::isComponentComplete() const
bool QQuickPopup::eventFilter(QObject *object, QEvent *event)
{
- Q_D(QQuickPopup);
- Q_UNUSED(object);
- switch (event->type()) {
- case QEvent::MouseButtonPress:
- case QEvent::MouseButtonRelease:
- if (d->modal)
- event->setAccepted(true);
- if (QQuickWindow *window = qobject_cast<QQuickWindow *>(object)) {
- if (d->tryClose(window->contentItem(), static_cast<QMouseEvent *>(event)))
- return true;
- }
- return false;
- case QEvent::KeyPress:
- case QEvent::KeyRelease:
- case QEvent::MouseMove:
- case QEvent::Wheel:
- if (d->modal)
- event->setAccepted(true);
- return false;
- default:
- return false;
- }
+ if (QQuickWindow *window = qobject_cast<QQuickWindow *>(object))
+ return overlayEvent(window->contentItem(), event);
+ return false;
+}
+
+bool QQuickPopup::childMouseEventFilter(QQuickItem *child, QEvent *event)
+{
+ Q_UNUSED(child);
+ Q_UNUSED(event);
+ return false;
}
void QQuickPopup::focusInEvent(QFocusEvent *event)
@@ -1574,6 +1691,9 @@ void QQuickPopup::keyPressEvent(QKeyEvent *event)
Q_D(QQuickPopup);
event->accept();
+ if (hasActiveFocus() && (event->key() == Qt::Key_Tab || event->key() == Qt::Key_Backtab))
+ QQuickItemPrivate::focusNextPrev(d->popupItem, event->key() == Qt::Key_Tab);
+
if (event->key() != Qt::Key_Escape)
return;
@@ -1610,6 +1730,30 @@ void QQuickPopup::mouseUngrabEvent()
{
}
+bool QQuickPopup::overlayEvent(QQuickItem *item, QEvent *event)
+{
+ Q_D(QQuickPopup);
+ switch (event->type()) {
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ case QEvent::MouseMove:
+ case QEvent::Wheel:
+ if (d->modal)
+ event->accept();
+ return d->modal;
+
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseButtonRelease:
+ if (d->modal)
+ event->accept();
+ d->tryClose(item, static_cast<QMouseEvent *>(event));
+ return d->modal;
+
+ default:
+ return false;
+ }
+}
+
void QQuickPopup::wheelEvent(QWheelEvent *event)
{
event->accept();
@@ -1622,10 +1766,17 @@ void QQuickPopup::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
emit contentItemChanged();
}
+void QQuickPopup::fontChange(const QFont &newFont, const QFont &oldFont)
+{
+ Q_UNUSED(newFont);
+ Q_UNUSED(oldFont);
+ emit fontChanged();
+}
+
void QQuickPopup::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickPopup);
- d->positioner.repositionPopup();
+ d->reposition();
if (!qFuzzyCompare(newGeometry.width(), oldGeometry.width())) {
emit widthChanged();
emit availableWidthChanged();
@@ -1636,12 +1787,35 @@ void QQuickPopup::geometryChanged(const QRectF &newGeometry, const QRectF &oldGe
}
}
+void QQuickPopup::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
+{
+ Q_UNUSED(data);
+
+ switch (change) {
+ case QQuickItem::ItemActiveFocusHasChanged:
+ emit activeFocusChanged();
+ break;
+ case QQuickItem::ItemOpacityHasChanged:
+ emit opacityChanged();
+ break;
+ default:
+ break;
+ }
+}
+
+void QQuickPopup::localeChange(const QLocale &newLocale, const QLocale &oldLocale)
+{
+ Q_UNUSED(newLocale);
+ Q_UNUSED(oldLocale);
+ emit localeChanged();
+}
+
void QQuickPopup::marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins)
{
Q_D(QQuickPopup);
Q_UNUSED(newMargins);
Q_UNUSED(oldMargins);
- d->positioner.repositionPopup();
+ d->reposition();
}
void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding)
@@ -1666,6 +1840,11 @@ void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &ol
emit availableHeightChanged();
}
+QFont QQuickPopup::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont);
+}
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role QQuickPopup::accessibleRole() const
{
diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h
index b818ea7f..22f9e8a9 100644
--- a/src/templates/qquickpopup_p.h
+++ b/src/templates/qquickpopup_p.h
@@ -51,10 +51,13 @@
#include <QtCore/qobject.h>
#include <QtCore/qmargins.h>
#include <QtGui/qevent.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtCore/qlocale.h>
+#include <QtGui/qfont.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
#include <QtQml/qqml.h>
#include <QtQml/qqmllist.h>
#include <QtQml/qqmlparserstatus.h>
+#include <QtQuick/qquickitem.h>
#ifndef QT_NO_ACCESSIBILITY
#include <QtGui/qaccessible.h>
@@ -62,12 +65,11 @@
QT_BEGIN_NAMESPACE
-class QQuickItem;
+class QQuickWindow;
class QQuickPopupPrivate;
class QQuickTransition;
-class QQuickTransform;
-class Q_LABSTEMPLATES_EXPORT QQuickPopup : public QObject, public QQmlParserStatus
+class Q_QUICKTEMPLATES_EXPORT QQuickPopup : public QObject, public QQmlParserStatus
{
Q_OBJECT
Q_INTERFACES(QQmlParserStatus)
@@ -92,6 +94,8 @@ class Q_LABSTEMPLATES_EXPORT QQuickPopup : public QObject, public QQmlParserStat
Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL)
Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged FINAL)
Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL)
+ Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL)
+ Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL)
Q_PROPERTY(QQuickItem *parent READ parentItem WRITE setParentItem NOTIFY parentChanged FINAL)
Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL)
@@ -111,7 +115,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickPopup : public QObject, public QQmlParserStat
Q_CLASSINFO("DefaultProperty", "contentData")
public:
- explicit QQuickPopup(QObject *parent = Q_NULLPTR);
+ explicit QQuickPopup(QObject *parent = nullptr);
~QQuickPopup();
qreal x() const;
@@ -120,6 +124,9 @@ public:
qreal y() const;
void setY(qreal y);
+ QPointF position() const;
+ void setPosition(const QPointF &pos);
+
qreal z() const;
void setZ(qreal z);
@@ -186,6 +193,15 @@ public:
void setBottomPadding(qreal padding);
void resetBottomPadding();
+ QLocale locale() const;
+ void setLocale(const QLocale &locale);
+ void resetLocale();
+
+ QFont font() const;
+ void setFont(const QFont &font);
+ void resetFont();
+
+ QQuickWindow *window() const;
QQuickItem *popupItem() const;
QQuickItem *parentItem() const;
@@ -251,7 +267,8 @@ public:
QQuickTransition *exit() const;
void setExit(QQuickTransition *transition);
- QQmlListProperty<QObject> data();
+ bool filtersChildMouseEvents() const;
+ void setFiltersChildMouseEvents(bool filter);
public Q_SLOTS:
void open();
@@ -279,6 +296,8 @@ Q_SIGNALS:
void leftPaddingChanged();
void rightPaddingChanged();
void bottomPaddingChanged();
+ void fontChanged();
+ void localeChanged();
void parentChanged();
void backgroundChanged();
void contentItemChanged();
@@ -293,6 +312,7 @@ Q_SIGNALS:
void closePolicyChanged();
void enterChanged();
void exitChanged();
+ void windowChanged(QQuickWindow *window);
void aboutToShow();
void aboutToHide();
@@ -300,11 +320,12 @@ Q_SIGNALS:
protected:
QQuickPopup(QQuickPopupPrivate &dd, QObject *parent);
- void classBegin() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void classBegin() override;
+ void componentComplete() override;
bool isComponentComplete() const;
- bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *object, QEvent *event) override;
+ virtual bool childMouseEventFilter(QQuickItem *child, QEvent *event);
virtual void focusInEvent(QFocusEvent *event);
virtual void focusOutEvent(QFocusEvent *event);
virtual void keyPressEvent(QKeyEvent *event);
@@ -314,13 +335,19 @@ protected:
virtual void mouseReleaseEvent(QMouseEvent *event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void mouseUngrabEvent();
+ virtual bool overlayEvent(QQuickItem *item, QEvent *event);
virtual void wheelEvent(QWheelEvent *event);
virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem);
+ virtual void fontChange(const QFont &newFont, const QFont &oldFont);
virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
+ virtual void localeChange(const QLocale &newLocale, const QLocale &oldLocale);
+ virtual void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data);
virtual void marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins);
virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding);
+ virtual QFont defaultFont() const;
+
#ifndef QT_NO_ACCESSIBILITY
virtual QAccessible::Role accessibleRole() const;
#endif
@@ -329,6 +356,7 @@ private:
Q_DISABLE_COPY(QQuickPopup)
Q_DECLARE_PRIVATE(QQuickPopup)
friend class QQuickPopupItem;
+ friend class QQuickOverlay;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickPopup::ClosePolicy)
diff --git a/src/templates/qquickpopup_p_p.h b/src/templates/qquickpopup_p_p.h
index 017949cd..577c4b51 100644
--- a/src/templates/qquickpopup_p_p.h
+++ b/src/templates/qquickpopup_p_p.h
@@ -73,7 +73,7 @@ public:
void transitionExit();
protected:
- void finished() Q_DECL_OVERRIDE;
+ void finished() override;
private:
enum TransitionState {
@@ -92,24 +92,29 @@ public:
explicit QQuickPopupItem(QQuickPopup *popup);
protected:
- void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
-
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void itemChange(ItemChange change, const ItemChangeData &data) Q_DECL_OVERRIDE;
- void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE;
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
+ void focusInEvent(QFocusEvent *event) override;
+ void focusOutEvent(QFocusEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseDoubleClickEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void wheelEvent(QWheelEvent *event) override;
+
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
+ void fontChange(const QFont &newFont, const QFont &oldFont) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override;
+ void itemChange(ItemChange change, const ItemChangeData &data) override;
+ void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
+
+ QFont defaultFont() const override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
@@ -122,17 +127,9 @@ public:
explicit QQuickPopupPositioner(QQuickPopupPrivate *popup);
~QQuickPopupPositioner();
- qreal x() const;
- void setX(qreal x);
-
- qreal y() const;
- void setY(qreal y);
-
QQuickItem *parentItem() const;
void setParentItem(QQuickItem *parent);
- void repositionPopup();
-
protected:
void itemGeometryChanged(QQuickItem *, const QRectF &, const QRectF &);
void itemParentChanged(QQuickItem *, QQuickItem *parent);
@@ -145,8 +142,6 @@ private:
bool isAncestor(QQuickItem *item) const;
- qreal m_x;
- qreal m_y;
QQuickItem *m_parentItem;
QQuickPopupPrivate *m_popup;
};
@@ -165,9 +160,12 @@ public:
void init();
bool tryClose(QQuickItem *item, QMouseEvent *event);
+ virtual void reposition();
- void finalizeEnterTransition();
- void finalizeExitTransition();
+ virtual void prepareEnterTransition(bool notify = true);
+ virtual void prepareExitTransition();
+ virtual void finalizeEnterTransition();
+ virtual void finalizeExitTransition(bool hide = true);
QMarginsF getMargins() const;
@@ -178,11 +176,14 @@ public:
bool focus;
bool modal;
+ bool visible;
bool complete;
bool hasTopMargin;
bool hasLeftMargin;
bool hasRightMargin;
bool hasBottomMargin;
+ qreal x;
+ qreal y;
qreal margins;
qreal topMargin;
qreal leftMargin;
@@ -196,10 +197,13 @@ public:
QQuickTransition *exit;
QQuickPopupItem *popupItem;
QQuickPopupPositioner positioner;
+ QList<QQuickStateAction> enterActions;
+ QList<QQuickStateAction> exitActions;
QQuickPopupTransitionManager transitionManager;
+
+ friend class QQuickPopupTransitionManager;
};
QT_END_NAMESPACE
#endif // QQUICKPOPUP_P_P_H
-
diff --git a/src/templates/qquickpressandholdhelper.cpp b/src/templates/qquickpresshandler.cpp
index 29b3bb0a..e505ab7d 100644
--- a/src/templates/qquickpressandholdhelper.cpp
+++ b/src/templates/qquickpresshandler.cpp
@@ -34,7 +34,7 @@
**
****************************************************************************/
-#include "qquickpressandholdhelper_p.h"
+#include "qquickpresshandler_p_p.h"
#include <QtCore/private/qobject_p.h>
#include <QtGui/qguiapplication.h>
@@ -44,14 +44,14 @@
QT_BEGIN_NAMESPACE
-QQuickPressAndHoldHelper::QQuickPressAndHoldHelper()
- : control(Q_NULLPTR)
+QQuickPressHandler::QQuickPressHandler()
+ : control(nullptr)
, longPress(false)
, pressAndHoldSignalIndex(-1)
- , delayedMousePressEvent(Q_NULLPTR)
+ , delayedMousePressEvent(nullptr)
{ }
-void QQuickPressAndHoldHelper::mousePressEvent(QMouseEvent *event)
+void QQuickPressHandler::mousePressEvent(QMouseEvent *event)
{
longPress = false;
pressPos = event->localPos();
@@ -63,19 +63,19 @@ void QQuickPressAndHoldHelper::mousePressEvent(QMouseEvent *event)
}
}
-void QQuickPressAndHoldHelper::mouseMoveEvent(QMouseEvent *event)
+void QQuickPressHandler::mouseMoveEvent(QMouseEvent *event)
{
if (qAbs(int(event->localPos().x() - pressPos.x())) > QGuiApplication::styleHints()->startDragDistance())
timer.stop();
}
-void QQuickPressAndHoldHelper::mouseReleaseEvent(QMouseEvent *)
+void QQuickPressHandler::mouseReleaseEvent(QMouseEvent *)
{
if (!longPress)
timer.stop();
}
-void QQuickPressAndHoldHelper::timerEvent(QTimerEvent *)
+void QQuickPressHandler::timerEvent(QTimerEvent *)
{
timer.stop();
clearDelayedMouseEvent();
@@ -91,14 +91,14 @@ void QQuickPressAndHoldHelper::timerEvent(QTimerEvent *)
mev.setAccepted(true);
// Use fast signal invocation since we already got its index
QQuickMouseEvent *mevPtr = &mev;
- void *args[] = { Q_NULLPTR, &mevPtr };
+ void *args[] = { nullptr, &mevPtr };
QMetaObject::metacall(control, QMetaObject::InvokeMetaMethod, pressAndHoldSignalIndex, args);
if (!mev.isAccepted())
longPress = false;
}
}
-void QQuickPressAndHoldHelper::clearDelayedMouseEvent()
+void QQuickPressHandler::clearDelayedMouseEvent()
{
if (delayedMousePressEvent) {
delete delayedMousePressEvent;
@@ -106,7 +106,7 @@ void QQuickPressAndHoldHelper::clearDelayedMouseEvent()
}
}
-bool QQuickPressAndHoldHelper::isActive()
+bool QQuickPressHandler::isActive()
{
return !(timer.isActive() || longPress);
}
diff --git a/src/templates/qquickpressandholdhelper_p.h b/src/templates/qquickpresshandler_p_p.h
index 7599c6bd..526695e0 100644
--- a/src/templates/qquickpressandholdhelper_p.h
+++ b/src/templates/qquickpresshandler_p_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKPRESSANDHOLDHELPER_H
-#define QQUICKPRESSANDHOLDHELPER_H
+#ifndef QQUICKPRESSHANDLER_P_P_H
+#define QQUICKPRESSHANDLER_P_P_H
//
// W A R N I N G
@@ -57,9 +57,9 @@ class QQuickItem;
class QMouseEvent;
class QTimerEvent;
-struct QQuickPressAndHoldHelper
+struct QQuickPressHandler
{
- QQuickPressAndHoldHelper();
+ QQuickPressHandler();
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
@@ -79,4 +79,4 @@ struct QQuickPressAndHoldHelper
QT_END_NAMESPACE
-#endif // QQUICKPRESSANDHOLDHELPER_H
+#endif // QQUICKPRESSHANDLER_P_P_H
diff --git a/src/templates/qquickprogressbar.cpp b/src/templates/qquickprogressbar.cpp
index 972654ad..2be0a776 100644
--- a/src/templates/qquickprogressbar.cpp
+++ b/src/templates/qquickprogressbar.cpp
@@ -45,14 +45,15 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickProgressBar
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-indicators
- \brief A progress bar control.
+ \brief Indicates the progress of an operation.
- ProgressBar indicates the progress of an operation.
+ ProgressBar indicates the progress of an operation. The value should be updated
+ regularly. The range is defined by \l from and \l to, which both can contain any value.
\table
- \row \li \image qtlabscontrols-progressbar-normal.png
+ \row \li \image qtquickcontrols-progressbar-normal.png
\li A progress bar in its normal state.
- \row \li \image qtlabscontrols-progressbar-disabled.png
+ \row \li \image qtquickcontrols-progressbar-disabled.png
\li A progress bar that is disabled.
\endtable
@@ -70,7 +71,7 @@ QT_BEGIN_NAMESPACE
class QQuickProgressBarPrivate : public QQuickControlPrivate
{
public:
- QQuickProgressBarPrivate() : from(0), to(1.0), value(0), indeterminate(false), indicator(Q_NULLPTR)
+ QQuickProgressBarPrivate() : from(0), to(1.0), value(0), indeterminate(false)
{
}
@@ -78,7 +79,6 @@ public:
qreal to;
qreal value;
bool indeterminate;
- QQuickItem *indicator;
};
QQuickProgressBar::QQuickProgressBar(QQuickItem *parent) :
@@ -102,14 +102,15 @@ qreal QQuickProgressBar::from() const
void QQuickProgressBar::setFrom(qreal from)
{
Q_D(QQuickProgressBar);
- if (!qFuzzyCompare(d->from, from)) {
- d->from = from;
- emit fromChanged();
- emit positionChanged();
- emit visualPositionChanged();
- if (isComponentComplete())
- setValue(d->value);
- }
+ if (qFuzzyCompare(d->from, from))
+ return;
+
+ d->from = from;
+ emit fromChanged();
+ emit positionChanged();
+ emit visualPositionChanged();
+ if (isComponentComplete())
+ setValue(d->value);
}
/*!
@@ -128,14 +129,15 @@ qreal QQuickProgressBar::to() const
void QQuickProgressBar::setTo(qreal to)
{
Q_D(QQuickProgressBar);
- if (!qFuzzyCompare(d->to, to)) {
- d->to = to;
- emit toChanged();
- emit positionChanged();
- emit visualPositionChanged();
- if (isComponentComplete())
- setValue(d->value);
- }
+ if (qFuzzyCompare(d->to, to))
+ return;
+
+ d->to = to;
+ emit toChanged();
+ emit positionChanged();
+ emit visualPositionChanged();
+ if (isComponentComplete())
+ setValue(d->value);
}
/*!
@@ -157,12 +159,13 @@ void QQuickProgressBar::setValue(qreal value)
if (isComponentComplete())
value = d->from > d->to ? qBound(d->to, value, d->from) : qBound(d->from, value, d->to);
- if (!qFuzzyCompare(d->value, value)) {
- d->value = value;
- emit valueChanged();
- emit positionChanged();
- emit visualPositionChanged();
- }
+ if (qFuzzyCompare(d->value, value))
+ return;
+
+ d->value = value;
+ emit valueChanged();
+ emit positionChanged();
+ emit visualPositionChanged();
}
/*!
@@ -208,7 +211,13 @@ qreal QQuickProgressBar::visualPosition() const
/*!
\qmlproperty bool Qt.labs.controls::ProgressBar::indeterminate
- This property holds whether the progress bar is in an indeterminate mode.
+ This property holds whether the progress bar is in indeterminate mode.
+ A progress bar in indeterminate mode displays that an operation is in progress, but it
+ doesn't show how much progress has been made.
+
+ See below for an example:
+ \image qtquickcontrols-progressbar-indeterminate.png
+
*/
bool QQuickProgressBar::isIndeterminate() const
{
@@ -219,35 +228,11 @@ bool QQuickProgressBar::isIndeterminate() const
void QQuickProgressBar::setIndeterminate(bool indeterminate)
{
Q_D(QQuickProgressBar);
- if (d->indeterminate != indeterminate) {
- d->indeterminate = indeterminate;
- emit indeterminateChanged();
- }
-}
-
-/*!
- \qmlproperty Item Qt.labs.controls::ProgressBar::indicator
-
- This property holds the indicator item.
+ if (d->indeterminate == indeterminate)
+ return;
- \sa {Customizing ProgressBar}
-*/
-QQuickItem *QQuickProgressBar::indicator() const
-{
- Q_D(const QQuickProgressBar);
- return d->indicator;
-}
-
-void QQuickProgressBar::setIndicator(QQuickItem *indicator)
-{
- Q_D(QQuickProgressBar);
- if (d->indicator != indicator) {
- delete d->indicator;
- d->indicator = indicator;
- if (indicator && !indicator->parentItem())
- indicator->setParentItem(this);
- emit indicatorChanged();
- }
+ d->indeterminate = indeterminate;
+ emit indeterminateChanged();
}
void QQuickProgressBar::mirrorChange()
diff --git a/src/templates/qquickprogressbar_p.h b/src/templates/qquickprogressbar_p.h
index f94c718e..9d37a5f9 100644
--- a/src/templates/qquickprogressbar_p.h
+++ b/src/templates/qquickprogressbar_p.h
@@ -48,13 +48,13 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickProgressBarPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickProgressBar : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickProgressBar : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL)
@@ -63,10 +63,9 @@ class Q_LABSTEMPLATES_EXPORT QQuickProgressBar : public QQuickControl
Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL)
Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL)
Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate NOTIFY indeterminateChanged FINAL)
- Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL)
public:
- explicit QQuickProgressBar(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickProgressBar(QQuickItem *parent = nullptr);
qreal from() const;
void setFrom(qreal from);
@@ -83,9 +82,6 @@ public:
bool isIndeterminate() const;
void setIndeterminate(bool indeterminate);
- QQuickItem *indicator() const;
- void setIndicator(QQuickItem *indicator);
-
Q_SIGNALS:
void fromChanged();
void toChanged();
@@ -93,14 +89,13 @@ Q_SIGNALS:
void positionChanged();
void visualPositionChanged();
void indeterminateChanged();
- void indicatorChanged();
protected:
- void mirrorChange() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void mirrorChange() override;
+ void componentComplete() override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickradiobutton.cpp b/src/templates/qquickradiobutton.cpp
index 7d7a64aa..1a8bac5d 100644
--- a/src/templates/qquickradiobutton.cpp
+++ b/src/templates/qquickradiobutton.cpp
@@ -47,20 +47,20 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickRadioButton
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-buttons
- \brief A radio button control.
+ \brief An option button that can be toggled on or off.
RadioButton presents an option button that can be toggled on (checked) or
off (unchecked). Radio buttons are typically used to select one option
from a set of options.
\table
- \row \li \image qtlabscontrols-radiobutton-normal.png
+ \row \li \image qtquickcontrols-radiobutton-normal.png
\li A radio button in its normal state.
- \row \li \image qtlabscontrols-radiobutton-checked.png
+ \row \li \image qtquickcontrols-radiobutton-checked.png
\li A radio button that is checked.
- \row \li \image qtlabscontrols-radiobutton-focused.png
+ \row \li \image qtquickcontrols-radiobutton-focused.png
\li A radio button that has active focus.
- \row \li \image qtlabscontrols-radiobutton-disabled.png
+ \row \li \image qtquickcontrols-radiobutton-disabled.png
\li A radio button that is disabled.
\endtable
diff --git a/src/templates/qquickradiobutton_p.h b/src/templates/qquickradiobutton_p.h
index 7d664864..f9ebf2f8 100644
--- a/src/templates/qquickradiobutton_p.h
+++ b/src/templates/qquickradiobutton_p.h
@@ -48,22 +48,22 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
-class Q_LABSTEMPLATES_EXPORT QQuickRadioButton : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickRadioButton : public QQuickAbstractButton
{
Q_OBJECT
public:
- explicit QQuickRadioButton(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickRadioButton(QQuickItem *parent = nullptr);
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
};
diff --git a/src/templates/qquickrangeslider.cpp b/src/templates/qquickrangeslider.cpp
index 69529f65..3de7106b 100644
--- a/src/templates/qquickrangeslider.cpp
+++ b/src/templates/qquickrangeslider.cpp
@@ -50,19 +50,19 @@ QT_BEGIN_NAMESPACE
\ingroup qtlabscontrols-input
\brief A slider control used to select a range of values.
- \image qtlabscontrols-rangeslider.gif
+ \image qtquickcontrols-rangeslider.gif
RangeSlider is used to select a range specified by two values, by sliding
each handle along a track.
\table
- \row \li \image qtlabscontrols-rangeslider-normal.png
+ \row \li \image qtquickcontrols-rangeslider-normal.png
\li A range slider in its normal state.
- \row \li \image qtlabscontrols-rangeslider-first-handle-focused.png
+ \row \li \image qtquickcontrols-rangeslider-first-handle-focused.png
\li A range slider whose first handle has active focus.
- \row \li \image qtlabscontrols-rangeslider-second-handle-focused.png
+ \row \li \image qtquickcontrols-rangeslider-second-handle-focused.png
\li A range slider whose second handle has active focus.
- \row \li \image qtlabscontrols-rangeslider-disabled.png
+ \row \li \image qtquickcontrols-rangeslider-disabled.png
\li A range slider that is disabled.
\endtable
@@ -87,7 +87,7 @@ public:
isPendingValue(false),
pendingValue(0),
position(0),
- handle(Q_NULLPTR),
+ handle(nullptr),
slider(slider),
pressed(false)
{
@@ -224,35 +224,36 @@ QQuickItem *QQuickRangeSliderNode::handle() const
void QQuickRangeSliderNode::setHandle(QQuickItem *handle)
{
Q_D(QQuickRangeSliderNode);
- if (d->handle != handle) {
- delete d->handle;
- d->handle = handle;
- if (handle) {
- if (!handle->parentItem())
- handle->setParentItem(d->slider);
-
- QQuickItem *firstHandle = d->slider->first()->handle();
- QQuickItem *secondHandle = d->slider->second()->handle();
- if (firstHandle && secondHandle) {
- // The order of property assignments in QML is undefined,
- // but we need the first handle to be before the second due
- // to focus order constraints, so check for that here.
- const QList<QQuickItem *> childItems = d->slider->childItems();
- const int firstIndex = childItems.indexOf(firstHandle);
- const int secondIndex = childItems.indexOf(secondHandle);
- if (firstIndex != -1 && secondIndex != -1 && firstIndex > secondIndex) {
- firstHandle->stackBefore(secondHandle);
- // Ensure we have some way of knowing which handle is above
- // the other when it comes to mouse presses, and also that
- // they are rendered in the correct order.
- secondHandle->setZ(secondHandle->z() + 1);
- }
- }
+ if (d->handle == handle)
+ return;
- handle->setActiveFocusOnTab(true);
+ delete d->handle;
+ d->handle = handle;
+ if (handle) {
+ if (!handle->parentItem())
+ handle->setParentItem(d->slider);
+
+ QQuickItem *firstHandle = d->slider->first()->handle();
+ QQuickItem *secondHandle = d->slider->second()->handle();
+ if (firstHandle && secondHandle) {
+ // The order of property assignments in QML is undefined,
+ // but we need the first handle to be before the second due
+ // to focus order constraints, so check for that here.
+ const QList<QQuickItem *> childItems = d->slider->childItems();
+ const int firstIndex = childItems.indexOf(firstHandle);
+ const int secondIndex = childItems.indexOf(secondHandle);
+ if (firstIndex != -1 && secondIndex != -1 && firstIndex > secondIndex) {
+ firstHandle->stackBefore(secondHandle);
+ // Ensure we have some way of knowing which handle is above
+ // the other when it comes to mouse presses, and also that
+ // they are rendered in the correct order.
+ secondHandle->setZ(secondHandle->z() + 1);
+ }
}
- emit handleChanged();
+
+ handle->setActiveFocusOnTab(true);
}
+ emit handleChanged();
}
bool QQuickRangeSliderNode::isPressed() const
@@ -264,11 +265,12 @@ bool QQuickRangeSliderNode::isPressed() const
void QQuickRangeSliderNode::setPressed(bool pressed)
{
Q_D(QQuickRangeSliderNode);
- if (d->pressed != pressed) {
- d->pressed = pressed;
- d->slider->setAccessibleProperty("pressed", pressed || d->slider->second()->isPressed());
- emit pressedChanged();
- }
+ if (d->pressed == pressed)
+ return;
+
+ d->pressed = pressed;
+ d->slider->setAccessibleProperty("pressed", pressed || d->slider->second()->isPressed());
+ emit pressedChanged();
}
void QQuickRangeSliderNode::increase()
@@ -297,11 +299,10 @@ public:
from(defaultFrom),
to(defaultTo),
stepSize(0),
- first(Q_NULLPTR),
- second(Q_NULLPTR),
+ first(nullptr),
+ second(nullptr),
orientation(Qt::Horizontal),
- snapMode(QQuickRangeSlider::NoSnap),
- track(Q_NULLPTR)
+ snapMode(QQuickRangeSlider::NoSnap)
{
}
@@ -313,7 +314,6 @@ public:
QPoint pressPoint;
Qt::Orientation orientation;
QQuickRangeSlider::SnapMode snapMode;
- QQuickItem *track;
};
static qreal valueAt(const QQuickRangeSlider *slider, qreal position)
@@ -552,10 +552,11 @@ qreal QQuickRangeSlider::stepSize() const
void QQuickRangeSlider::setStepSize(qreal step)
{
Q_D(QQuickRangeSlider);
- if (!qFuzzyCompare(d->stepSize, step)) {
- d->stepSize = step;
- emit stepSizeChanged();
- }
+ if (qFuzzyCompare(d->stepSize, step))
+ return;
+
+ d->stepSize = step;
+ emit stepSizeChanged();
}
/*!
@@ -579,10 +580,11 @@ QQuickRangeSlider::SnapMode QQuickRangeSlider::snapMode() const
void QQuickRangeSlider::setSnapMode(SnapMode mode)
{
Q_D(QQuickRangeSlider);
- if (d->snapMode != mode) {
- d->snapMode = mode;
- emit snapModeChanged();
- }
+ if (d->snapMode == mode)
+ return;
+
+ d->snapMode = mode;
+ emit snapModeChanged();
}
/*!
@@ -603,35 +605,11 @@ Qt::Orientation QQuickRangeSlider::orientation() const
void QQuickRangeSlider::setOrientation(Qt::Orientation orientation)
{
Q_D(QQuickRangeSlider);
- if (d->orientation != orientation) {
- d->orientation = orientation;
- emit orientationChanged();
- }
-}
-
-/*!
- \qmlproperty Item Qt.labs.controls::RangeSlider::track
-
- This property holds the track item.
-
- \sa {Customizing Slider}
-*/
-QQuickItem *QQuickRangeSlider::track() const
-{
- Q_D(const QQuickRangeSlider);
- return d->track;
-}
+ if (d->orientation == orientation)
+ return;
-void QQuickRangeSlider::setTrack(QQuickItem *track)
-{
- Q_D(QQuickRangeSlider);
- if (d->track != track) {
- delete d->track;
- d->track = track;
- if (track && !track->parentItem())
- track->setParentItem(this);
- emit trackChanged();
- }
+ d->orientation = orientation;
+ emit orientationChanged();
}
/*!
@@ -715,7 +693,7 @@ void QQuickRangeSlider::keyPressEvent(QKeyEvent *event)
QQuickControl::keyPressEvent(event);
QQuickRangeSliderNode *focusNode = d->first->handle()->hasActiveFocus()
- ? d->first : (d->second->handle()->hasActiveFocus() ? d->second : Q_NULLPTR);
+ ? d->first : (d->second->handle()->hasActiveFocus() ? d->second : nullptr);
if (!focusNode)
return;
@@ -766,8 +744,8 @@ void QQuickRangeSlider::mousePressEvent(QMouseEvent *event)
QQuickItem *secondHandle = d->second->handle();
const bool firstHit = firstHandle && firstHandle->contains(mapToItem(firstHandle, d->pressPoint));
const bool secondHit = secondHandle && secondHandle->contains(mapToItem(secondHandle, d->pressPoint));
- QQuickRangeSliderNode *hitNode = Q_NULLPTR;
- QQuickRangeSliderNode *otherNode = Q_NULLPTR;
+ QQuickRangeSliderNode *hitNode = nullptr;
+ QQuickRangeSliderNode *otherNode = nullptr;
if (firstHit && secondHit) {
// choose highest
@@ -825,7 +803,7 @@ void QQuickRangeSlider::mouseMoveEvent(QMouseEvent *event)
setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(event->pos().y() - d->pressPoint.y(), Qt::YAxis, event));
}
if (keepMouseGrab()) {
- QQuickRangeSliderNode *pressedNode = d->first->isPressed() ? d->first : (d->second->isPressed() ? d->second : Q_NULLPTR);
+ QQuickRangeSliderNode *pressedNode = d->first->isPressed() ? d->first : (d->second->isPressed() ? d->second : nullptr);
if (pressedNode) {
qreal pos = positionAt(this, pressedNode->handle(), event->pos());
if (d->snapMode == SnapAlways)
@@ -844,7 +822,7 @@ void QQuickRangeSlider::mouseReleaseEvent(QMouseEvent *event)
if (!keepMouseGrab())
return;
- QQuickRangeSliderNode *pressedNode = d->first->isPressed() ? d->first : (d->second->isPressed() ? d->second : Q_NULLPTR);
+ QQuickRangeSliderNode *pressedNode = d->first->isPressed() ? d->first : (d->second->isPressed() ? d->second : nullptr);
if (!pressedNode)
return;
diff --git a/src/templates/qquickrangeslider_p.h b/src/templates/qquickrangeslider_p.h
index 4cf6ffd6..7eda2e4e 100644
--- a/src/templates/qquickrangeslider_p.h
+++ b/src/templates/qquickrangeslider_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickRangeSliderPrivate;
class QQuickRangeSliderNode;
-class Q_LABSTEMPLATES_EXPORT QQuickRangeSlider : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickRangeSlider : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL)
@@ -65,10 +65,9 @@ class Q_LABSTEMPLATES_EXPORT QQuickRangeSlider : public QQuickControl
Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL)
Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged FINAL)
Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL)
- Q_PROPERTY(QQuickItem *track READ track WRITE setTrack NOTIFY trackChanged FINAL)
public:
- explicit QQuickRangeSlider(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickRangeSlider(QQuickItem *parent = nullptr);
qreal from() const;
void setFrom(qreal from);
@@ -95,9 +94,6 @@ public:
Qt::Orientation orientation() const;
void setOrientation(Qt::Orientation orientation);
- QQuickItem *track() const;
- void setTrack(QQuickItem *track);
-
Q_INVOKABLE void setValues(qreal firstValue, qreal secondValue);
Q_SIGNALS:
@@ -106,21 +102,20 @@ Q_SIGNALS:
void stepSizeChanged();
void snapModeChanged();
void orientationChanged();
- void trackChanged();
protected:
- void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void mirrorChange() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void focusInEvent(QFocusEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void mirrorChange() override;
+ void componentComplete() override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
@@ -132,7 +127,7 @@ private:
class QQuickRangeSliderNodePrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickRangeSliderNode : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickRangeSliderNode : public QObject
{
Q_OBJECT
Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged FINAL)
diff --git a/src/templates/qquickscrollbar.cpp b/src/templates/qquickscrollbar.cpp
index 86d4e290..6e179e71 100644
--- a/src/templates/qquickscrollbar.cpp
+++ b/src/templates/qquickscrollbar.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
position. A scroll bar can be either \l vertical or \l horizontal, and can
be attached to any \l Flickable, such as \l ListView and \l GridView.
- \image qtlabscontrols-scrollbar.png
+ \image qtquickcontrols-scrollbar.png
\code
Flickable {
@@ -73,6 +73,21 @@ QT_BEGIN_NAMESPACE
\li \l active
\endlist
+ Notice that ScrollBar does not filter key events of the Flickable it is
+ attached to. The following example illustrates how to implement scrolling
+ with up and down keys:
+
+ \code
+ Flickable {
+ focus: true
+
+ Keys.onUpPressed: scrollBar.decrease()
+ Keys.onDownPressed: scrollBar.increase()
+
+ ScrollBar.vertical: ScrollBar { id: scrollBar }
+ }
+ \endcode
+
\labs
\sa ScrollIndicator, {Customizing ScrollBar}, {Indicator Controls}
@@ -80,10 +95,12 @@ QT_BEGIN_NAMESPACE
class QQuickScrollBarPrivate : public QQuickControlPrivate
{
+ Q_DECLARE_PUBLIC(QQuickScrollBar)
+
public:
- QQuickScrollBarPrivate() : size(0), position(0), offset(0),
+ QQuickScrollBarPrivate() : size(0), position(0), stepSize(0), offset(0),
active(false), pressed(false), moving(false),
- orientation(Qt::Vertical), handle(Q_NULLPTR)
+ orientation(Qt::Vertical)
{
}
@@ -92,16 +109,44 @@ public:
return bar->d_func();
}
+ qreal positionAt(const QPoint &point) const;
+
+ void resizeContent() override;
+
qreal size;
qreal position;
+ qreal stepSize;
qreal offset;
bool active;
bool pressed;
bool moving;
Qt::Orientation orientation;
- QQuickItem *handle;
};
+qreal QQuickScrollBarPrivate::positionAt(const QPoint &point) const
+{
+ Q_Q(const QQuickScrollBar);
+ if (orientation == Qt::Horizontal)
+ return point.x() / q->width();
+ else
+ return point.y() / q->height();
+}
+
+void QQuickScrollBarPrivate::resizeContent()
+{
+ Q_Q(QQuickScrollBar);
+ if (!contentItem)
+ return;
+
+ if (orientation == Qt::Horizontal) {
+ contentItem->setPosition(QPointF(q->leftPadding() + position * q->availableWidth(), q->topPadding()));
+ contentItem->setSize(QSizeF(q->availableWidth() * size, q->availableHeight()));
+ } else {
+ contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding() + position * q->availableHeight()));
+ contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight() * size));
+ }
+}
+
QQuickScrollBar::QQuickScrollBar(QQuickItem *parent) :
QQuickControl(*(new QQuickScrollBarPrivate), parent)
{
@@ -116,7 +161,7 @@ QQuickScrollBarAttached *QQuickScrollBar::qmlAttachedProperties(QObject *object)
return new QQuickScrollBarAttached(flickable);
qWarning() << "ScrollBar must be attached to a Flickable" << object;
- return Q_NULLPTR;
+ return nullptr;
}
/*!
@@ -135,10 +180,14 @@ qreal QQuickScrollBar::size() const
void QQuickScrollBar::setSize(qreal size)
{
Q_D(QQuickScrollBar);
- if (!qFuzzyCompare(d->size, size)) {
- d->size = size;
- emit sizeChanged();
- }
+ size = qBound<qreal>(0.0, size, 1.0 - d->position);
+ if (qFuzzyCompare(d->size, size))
+ return;
+
+ d->size = size;
+ if (isComponentComplete())
+ d->resizeContent();
+ emit sizeChanged();
}
/*!
@@ -157,16 +206,43 @@ qreal QQuickScrollBar::position() const
void QQuickScrollBar::setPosition(qreal position)
{
Q_D(QQuickScrollBar);
- if (!qFuzzyCompare(d->position, position)) {
- d->position = position;
- emit positionChanged();
- }
+ position = qBound<qreal>(0.0, position, 1.0 - d->size);
+ if (qFuzzyCompare(d->position, position))
+ return;
+
+ d->position = position;
+ if (isComponentComplete())
+ d->resizeContent();
+ emit positionChanged();
+}
+
+/*!
+ \qmlproperty real Qt.labs.controls::ScrollBar::stepSize
+
+ This property holds the step size. The default value is \c 0.0.
+
+ \sa increase(), decrease()
+*/
+qreal QQuickScrollBar::stepSize() const
+{
+ Q_D(const QQuickScrollBar);
+ return d->stepSize;
+}
+
+void QQuickScrollBar::setStepSize(qreal step)
+{
+ Q_D(QQuickScrollBar);
+ if (qFuzzyCompare(d->stepSize, step))
+ return;
+
+ d->stepSize = step;
+ emit stepSizeChanged();
}
/*!
\qmlproperty bool Qt.labs.controls::ScrollBar::active
- This property holds whether the scroll bar is active ie. when its \l pressed
+ This property holds whether the scroll bar is active, i.e. when it's \l pressed
or the attached Flickable is \l {Flickable::moving}{moving}.
*/
bool QQuickScrollBar::isActive() const
@@ -178,10 +254,11 @@ bool QQuickScrollBar::isActive() const
void QQuickScrollBar::setActive(bool active)
{
Q_D(QQuickScrollBar);
- if (d->active != active) {
- d->active = active;
- emit activeChanged();
- }
+ if (d->active == active)
+ return;
+
+ d->active = active;
+ emit activeChanged();
}
/*!
@@ -198,12 +275,13 @@ bool QQuickScrollBar::isPressed() const
void QQuickScrollBar::setPressed(bool pressed)
{
Q_D(QQuickScrollBar);
- if (d->pressed != pressed) {
- d->pressed = pressed;
- setAccessibleProperty("pressed", pressed);
- setActive(d->pressed || d->moving);
- emit pressedChanged();
- }
+ if (d->pressed == pressed)
+ return;
+
+ d->pressed = pressed;
+ setAccessibleProperty("pressed", pressed);
+ setActive(d->pressed || d->moving);
+ emit pressedChanged();
}
/*!
@@ -224,42 +302,52 @@ Qt::Orientation QQuickScrollBar::orientation() const
void QQuickScrollBar::setOrientation(Qt::Orientation orientation)
{
Q_D(QQuickScrollBar);
- if (d->orientation != orientation) {
- d->orientation = orientation;
- emit orientationChanged();
- }
+ if (d->orientation == orientation)
+ return;
+
+ d->orientation = orientation;
+ if (isComponentComplete())
+ d->resizeContent();
+ emit orientationChanged();
}
/*!
- \qmlproperty Item Qt.labs.controls::ScrollBar::handle
+ \qmlmethod void Qt.labs.controls::ScrollBar::increase()
- This property holds the handle item.
+ Increases the position by \l stepSize or \c 0.1 if stepSize is \c 0.0.
- \sa {Customizing ScrollBar}
+ \sa stepSize
*/
-QQuickItem *QQuickScrollBar::handle() const
+void QQuickScrollBar::increase()
{
- Q_D(const QQuickScrollBar);
- return d->handle;
+ Q_D(QQuickScrollBar);
+ qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize;
+ setActive(true);
+ setPosition(d->position + step);
+ setActive(false);
}
-void QQuickScrollBar::setHandle(QQuickItem *handle)
+/*!
+ \qmlmethod void Qt.labs.controls::ScrollBar::decrease()
+
+ Decreases the position by \l stepSize or \c 0.1 if stepSize is \c 0.0.
+
+ \sa stepSize
+*/
+void QQuickScrollBar::decrease()
{
Q_D(QQuickScrollBar);
- if (d->handle != handle) {
- delete d->handle;
- d->handle = handle;
- if (handle && !handle->parentItem())
- handle->setParentItem(this);
- emit handleChanged();
- }
+ qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize;
+ setActive(true);
+ setPosition(d->position - step);
+ setActive(false);
}
void QQuickScrollBar::mousePressEvent(QMouseEvent *event)
{
Q_D(QQuickScrollBar);
QQuickControl::mousePressEvent(event);
- d->offset = positionAt(event->pos()) - d->position;
+ d->offset = d->positionAt(event->pos()) - d->position;
if (d->offset < 0 || d->offset > d->size)
d->offset = d->size / 2;
setPressed(true);
@@ -269,27 +357,18 @@ void QQuickScrollBar::mouseMoveEvent(QMouseEvent *event)
{
Q_D(QQuickScrollBar);
QQuickControl::mouseMoveEvent(event);
- setPosition(qBound<qreal>(0.0, positionAt(event->pos()) - d->offset, 1.0 - d->size));
+ setPosition(qBound<qreal>(0.0, d->positionAt(event->pos()) - d->offset, 1.0 - d->size));
}
void QQuickScrollBar::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickScrollBar);
QQuickControl::mouseReleaseEvent(event);
- setPosition(qBound<qreal>(0.0, positionAt(event->pos()) - d->offset, 1.0 - d->size));
+ setPosition(qBound<qreal>(0.0, d->positionAt(event->pos()) - d->offset, 1.0 - d->size));
d->offset = 0.0;
setPressed(false);
}
-qreal QQuickScrollBar::positionAt(const QPoint &point) const
-{
- Q_D(const QQuickScrollBar);
- if (d->orientation == Qt::Horizontal)
- return point.x() / width();
- else
- return point.y() / height();
-}
-
#ifndef QT_NO_ACCESSIBILITY
void QQuickScrollBar::accessibilityActiveChanged(bool active)
{
@@ -309,7 +388,7 @@ QAccessible::Role QQuickScrollBar::accessibleRole() const
class QQuickScrollBarAttachedPrivate : public QObjectPrivate, public QQuickItemChangeListener
{
public:
- QQuickScrollBarAttachedPrivate(QQuickFlickable *flickable) : flickable(flickable), horizontal(Q_NULLPTR), vertical(Q_NULLPTR) { }
+ QQuickScrollBarAttachedPrivate(QQuickFlickable *flickable) : flickable(flickable), horizontal(nullptr), vertical(nullptr) { }
void activateHorizontal();
void activateVertical();
@@ -319,7 +398,7 @@ public:
void layoutHorizontal(bool move = true);
void layoutVertical(bool move = true);
- void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) override;
QQuickFlickable *flickable;
QQuickScrollBar *horizontal;
@@ -436,40 +515,41 @@ QQuickScrollBar *QQuickScrollBarAttached::horizontal() const
void QQuickScrollBarAttached::setHorizontal(QQuickScrollBar *horizontal)
{
Q_D(QQuickScrollBarAttached);
- if (d->horizontal != horizontal) {
- if (d->horizontal) {
- QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
- QObjectPrivate::disconnect(d->horizontal, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollHorizontal);
- QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollBarAttachedPrivate::activateHorizontal);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- disconnect(area, SIGNAL(widthRatioChanged(qreal)), d->horizontal, SLOT(setSize(qreal)));
- disconnect(area, SIGNAL(xPositionChanged(qreal)), d->horizontal, SLOT(setPosition(qreal)));
- }
-
- d->horizontal = horizontal;
-
- if (horizontal) {
- if (!horizontal->parentItem())
- horizontal->setParentItem(d->flickable);
- horizontal->setOrientation(Qt::Horizontal);
-
- QQuickItemPrivate::get(horizontal)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
- QObjectPrivate::connect(horizontal, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollHorizontal);
- QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollBarAttachedPrivate::activateHorizontal);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- connect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal)));
- connect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal)));
-
- d->layoutHorizontal();
- horizontal->setSize(area->property("widthRatio").toReal());
- horizontal->setPosition(area->property("xPosition").toReal());
- }
- emit horizontalChanged();
+ if (d->horizontal == horizontal)
+ return;
+
+ if (d->horizontal) {
+ QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
+ QObjectPrivate::disconnect(d->horizontal, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollHorizontal);
+ QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollBarAttachedPrivate::activateHorizontal);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ disconnect(area, SIGNAL(widthRatioChanged(qreal)), d->horizontal, SLOT(setSize(qreal)));
+ disconnect(area, SIGNAL(xPositionChanged(qreal)), d->horizontal, SLOT(setPosition(qreal)));
+ }
+
+ d->horizontal = horizontal;
+
+ if (horizontal) {
+ if (!horizontal->parentItem())
+ horizontal->setParentItem(d->flickable);
+ horizontal->setOrientation(Qt::Horizontal);
+
+ QQuickItemPrivate::get(horizontal)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
+ QObjectPrivate::connect(horizontal, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollHorizontal);
+ QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollBarAttachedPrivate::activateHorizontal);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ connect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal)));
+ connect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal)));
+
+ d->layoutHorizontal();
+ horizontal->setSize(area->property("widthRatio").toReal());
+ horizontal->setPosition(area->property("xPosition").toReal());
}
+ emit horizontalChanged();
}
/*!
@@ -493,40 +573,41 @@ QQuickScrollBar *QQuickScrollBarAttached::vertical() const
void QQuickScrollBarAttached::setVertical(QQuickScrollBar *vertical)
{
Q_D(QQuickScrollBarAttached);
- if (d->vertical != vertical) {
- if (d->vertical) {
- QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
- QObjectPrivate::disconnect(d->vertical, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollVertical);
- QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollBarAttachedPrivate::activateVertical);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- disconnect(area, SIGNAL(heightRatioChanged(qreal)), d->vertical, SLOT(setSize(qreal)));
- disconnect(area, SIGNAL(yPositionChanged(qreal)), d->vertical, SLOT(setPosition(qreal)));
- }
-
- d->vertical = vertical;
-
- if (vertical) {
- if (!vertical->parentItem())
- vertical->setParentItem(d->flickable);
- vertical->setOrientation(Qt::Vertical);
-
- QQuickItemPrivate::get(vertical)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
- QObjectPrivate::connect(vertical, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollVertical);
- QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollBarAttachedPrivate::activateVertical);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- connect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal)));
- connect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal)));
-
- d->layoutVertical();
- vertical->setSize(area->property("heightRatio").toReal());
- vertical->setPosition(area->property("yPosition").toReal());
- }
- emit verticalChanged();
+ if (d->vertical == vertical)
+ return;
+
+ if (d->vertical) {
+ QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
+ QObjectPrivate::disconnect(d->vertical, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollVertical);
+ QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollBarAttachedPrivate::activateVertical);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ disconnect(area, SIGNAL(heightRatioChanged(qreal)), d->vertical, SLOT(setSize(qreal)));
+ disconnect(area, SIGNAL(yPositionChanged(qreal)), d->vertical, SLOT(setPosition(qreal)));
+ }
+
+ d->vertical = vertical;
+
+ if (vertical) {
+ if (!vertical->parentItem())
+ vertical->setParentItem(d->flickable);
+ vertical->setOrientation(Qt::Vertical);
+
+ QQuickItemPrivate::get(vertical)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
+ QObjectPrivate::connect(vertical, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollVertical);
+ QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollBarAttachedPrivate::activateVertical);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ connect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal)));
+ connect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal)));
+
+ d->layoutVertical();
+ vertical->setSize(area->property("heightRatio").toReal());
+ vertical->setPosition(area->property("yPosition").toReal());
}
+ emit verticalChanged();
}
QT_END_NAMESPACE
diff --git a/src/templates/qquickscrollbar_p.h b/src/templates/qquickscrollbar_p.h
index b944f92a..63ecd472 100644
--- a/src/templates/qquickscrollbar_p.h
+++ b/src/templates/qquickscrollbar_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -56,24 +56,27 @@ class QQuickFlickable;
class QQuickScrollBarAttached;
class QQuickScrollBarPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickScrollBar : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickScrollBar : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal size READ size WRITE setSize NOTIFY sizeChanged FINAL)
Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL)
+ Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL)
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged FINAL)
Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL)
Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL)
- Q_PROPERTY(QQuickItem *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL)
public:
- explicit QQuickScrollBar(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickScrollBar(QQuickItem *parent = nullptr);
static QQuickScrollBarAttached *qmlAttachedProperties(QObject *object);
qreal size() const;
qreal position() const;
+ qreal stepSize() const;
+ void setStepSize(qreal step);
+
bool isActive() const;
void setActive(bool active);
@@ -83,31 +86,28 @@ public:
Qt::Orientation orientation() const;
void setOrientation(Qt::Orientation orientation);
- QQuickItem *handle() const;
- void setHandle(QQuickItem *handle);
-
public Q_SLOTS:
+ void increase();
+ void decrease();
void setSize(qreal size);
void setPosition(qreal position);
Q_SIGNALS:
void sizeChanged();
void positionChanged();
+ void stepSizeChanged();
void activeChanged();
void pressedChanged();
void orientationChanged();
- void handleChanged();
protected:
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
-
- virtual qreal positionAt(const QPoint &point) const;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
@@ -117,7 +117,7 @@ private:
class QQuickScrollBarAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickScrollBarAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickScrollBarAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickScrollBar *horizontal READ horizontal WRITE setHorizontal NOTIFY horizontalChanged FINAL)
diff --git a/src/templates/qquickscrollindicator.cpp b/src/templates/qquickscrollindicator.cpp
index 4dc04141..540ff9d9 100644
--- a/src/templates/qquickscrollindicator.cpp
+++ b/src/templates/qquickscrollindicator.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
position. A scroll indicator can be either \l vertical or \l horizontal, and can
be attached to any \l Flickable, such as \l ListView and \l GridView.
- \image qtlabscontrols-scrollindicator.png
+ \image qtquickcontrols-scrollindicator.png
\code
Flickable {
@@ -80,19 +80,37 @@ QT_BEGIN_NAMESPACE
class QQuickScrollIndicatorPrivate : public QQuickControlPrivate
{
+ Q_DECLARE_PUBLIC(QQuickScrollIndicator)
+
public:
QQuickScrollIndicatorPrivate() : size(0), position(0),
- active(false), orientation(Qt::Vertical), indicator(Q_NULLPTR)
+ active(false), orientation(Qt::Vertical)
{
}
+ void resizeContent() override;
+
qreal size;
qreal position;
bool active;
Qt::Orientation orientation;
- QQuickItem *indicator;
};
+void QQuickScrollIndicatorPrivate::resizeContent()
+{
+ Q_Q(QQuickScrollIndicator);
+ if (!contentItem)
+ return;
+
+ if (orientation == Qt::Horizontal) {
+ contentItem->setPosition(QPointF(q->leftPadding() + position * q->availableWidth(), q->topPadding()));
+ contentItem->setSize(QSizeF(q->availableWidth() * size, q->availableHeight()));
+ } else {
+ contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding() + position * q->availableHeight()));
+ contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight() * size));
+ }
+}
+
QQuickScrollIndicator::QQuickScrollIndicator(QQuickItem *parent) :
QQuickControl(*(new QQuickScrollIndicatorPrivate), parent)
{
@@ -105,7 +123,7 @@ QQuickScrollIndicatorAttached *QQuickScrollIndicator::qmlAttachedProperties(QObj
return new QQuickScrollIndicatorAttached(flickable);
qWarning() << "ScrollIndicator must be attached to a Flickable" << object;
- return Q_NULLPTR;
+ return nullptr;
}
/*!
@@ -124,10 +142,13 @@ qreal QQuickScrollIndicator::size() const
void QQuickScrollIndicator::setSize(qreal size)
{
Q_D(QQuickScrollIndicator);
- if (!qFuzzyCompare(d->size, size)) {
- d->size = size;
- emit sizeChanged();
- }
+ if (qFuzzyCompare(d->size, size))
+ return;
+
+ d->size = size;
+ if (isComponentComplete())
+ d->resizeContent();
+ emit sizeChanged();
}
/*!
@@ -146,10 +167,13 @@ qreal QQuickScrollIndicator::position() const
void QQuickScrollIndicator::setPosition(qreal position)
{
Q_D(QQuickScrollIndicator);
- if (!qFuzzyCompare(d->position, position)) {
- d->position = position;
- emit positionChanged();
- }
+ if (qFuzzyCompare(d->position, position))
+ return;
+
+ d->position = position;
+ if (isComponentComplete())
+ d->resizeContent();
+ emit positionChanged();
}
/*!
@@ -167,10 +191,11 @@ bool QQuickScrollIndicator::isActive() const
void QQuickScrollIndicator::setActive(bool active)
{
Q_D(QQuickScrollIndicator);
- if (d->active != active) {
- d->active = active;
- emit activeChanged();
- }
+ if (d->active == active)
+ return;
+
+ d->active = active;
+ emit activeChanged();
}
/*!
@@ -191,41 +216,19 @@ Qt::Orientation QQuickScrollIndicator::orientation() const
void QQuickScrollIndicator::setOrientation(Qt::Orientation orientation)
{
Q_D(QQuickScrollIndicator);
- if (d->orientation != orientation) {
- d->orientation = orientation;
- emit orientationChanged();
- }
-}
-
-/*!
- \qmlproperty Item Qt.labs.controls::ScrollIndicator::indicator
-
- This property holds the indicator item.
+ if (d->orientation == orientation)
+ return;
- \sa {Customizing ScrollIndicator}
-*/
-QQuickItem *QQuickScrollIndicator::indicator() const
-{
- Q_D(const QQuickScrollIndicator);
- return d->indicator;
-}
-
-void QQuickScrollIndicator::setIndicator(QQuickItem *indicator)
-{
- Q_D(QQuickScrollIndicator);
- if (d->indicator != indicator) {
- delete d->indicator;
- d->indicator = indicator;
- if (indicator && !indicator->parentItem())
- indicator->setParentItem(this);
- emit indicatorChanged();
- }
+ d->orientation = orientation;
+ if (isComponentComplete())
+ d->resizeContent();
+ emit orientationChanged();
}
class QQuickScrollIndicatorAttachedPrivate : public QObjectPrivate, public QQuickItemChangeListener
{
public:
- QQuickScrollIndicatorAttachedPrivate(QQuickFlickable *flickable) : flickable(flickable), horizontal(Q_NULLPTR), vertical(Q_NULLPTR) { }
+ QQuickScrollIndicatorAttachedPrivate(QQuickFlickable *flickable) : flickable(flickable), horizontal(nullptr), vertical(nullptr) { }
void activateHorizontal();
void activateVertical();
@@ -233,7 +236,7 @@ public:
void layoutHorizontal(bool move = true);
void layoutVertical(bool move = true);
- void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) override;
QQuickFlickable *flickable;
QQuickScrollIndicator *horizontal;
@@ -318,38 +321,39 @@ QQuickScrollIndicator *QQuickScrollIndicatorAttached::horizontal() const
void QQuickScrollIndicatorAttached::setHorizontal(QQuickScrollIndicator *horizontal)
{
Q_D(QQuickScrollIndicatorAttached);
- if (d->horizontal != horizontal) {
- if (d->horizontal) {
- QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
- QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateHorizontal);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- disconnect(area, SIGNAL(widthRatioChanged(qreal)), d->horizontal, SLOT(setSize(qreal)));
- disconnect(area, SIGNAL(xPositionChanged(qreal)), d->horizontal, SLOT(setPosition(qreal)));
- }
-
- d->horizontal = horizontal;
-
- if (horizontal) {
- if (!horizontal->parentItem())
- horizontal->setParentItem(d->flickable);
- horizontal->setOrientation(Qt::Horizontal);
-
- QQuickItemPrivate::get(horizontal)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
- QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateHorizontal);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- connect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal)));
- connect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal)));
-
- d->layoutHorizontal();
- horizontal->setSize(area->property("widthRatio").toReal());
- horizontal->setPosition(area->property("xPosition").toReal());
- }
- emit horizontalChanged();
+ if (d->horizontal == horizontal)
+ return;
+
+ if (d->horizontal) {
+ QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
+ QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateHorizontal);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ disconnect(area, SIGNAL(widthRatioChanged(qreal)), d->horizontal, SLOT(setSize(qreal)));
+ disconnect(area, SIGNAL(xPositionChanged(qreal)), d->horizontal, SLOT(setPosition(qreal)));
}
+
+ d->horizontal = horizontal;
+
+ if (horizontal) {
+ if (!horizontal->parentItem())
+ horizontal->setParentItem(d->flickable);
+ horizontal->setOrientation(Qt::Horizontal);
+
+ QQuickItemPrivate::get(horizontal)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
+ QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateHorizontal);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ connect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal)));
+ connect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal)));
+
+ d->layoutHorizontal();
+ horizontal->setSize(area->property("widthRatio").toReal());
+ horizontal->setPosition(area->property("xPosition").toReal());
+ }
+ emit horizontalChanged();
}
/*!
@@ -373,38 +377,39 @@ QQuickScrollIndicator *QQuickScrollIndicatorAttached::vertical() const
void QQuickScrollIndicatorAttached::setVertical(QQuickScrollIndicator *vertical)
{
Q_D(QQuickScrollIndicatorAttached);
- if (d->vertical != vertical) {
- if (d->vertical) {
- QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
- QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateVertical);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- disconnect(area, SIGNAL(heightRatioChanged(qreal)), d->vertical, SLOT(setSize(qreal)));
- disconnect(area, SIGNAL(yPositionChanged(qreal)), d->vertical, SLOT(setPosition(qreal)));
- }
-
- d->vertical = vertical;
-
- if (vertical) {
- if (!vertical->parentItem())
- vertical->setParentItem(d->flickable);
- vertical->setOrientation(Qt::Vertical);
-
- QQuickItemPrivate::get(vertical)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
- QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateVertical);
-
- // TODO: export QQuickFlickableVisibleArea
- QObject *area = d->flickable->property("visibleArea").value<QObject *>();
- connect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal)));
- connect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal)));
-
- d->layoutVertical();
- vertical->setSize(area->property("heightRatio").toReal());
- vertical->setPosition(area->property("yPosition").toReal());
- }
- emit verticalChanged();
+ if (d->vertical == vertical)
+ return;
+
+ if (d->vertical) {
+ QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, QQuickItemPrivate::Geometry);
+ QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateVertical);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ disconnect(area, SIGNAL(heightRatioChanged(qreal)), d->vertical, SLOT(setSize(qreal)));
+ disconnect(area, SIGNAL(yPositionChanged(qreal)), d->vertical, SLOT(setPosition(qreal)));
+ }
+
+ d->vertical = vertical;
+
+ if (vertical) {
+ if (!vertical->parentItem())
+ vertical->setParentItem(d->flickable);
+ vertical->setOrientation(Qt::Vertical);
+
+ QQuickItemPrivate::get(vertical)->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange);
+ QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateVertical);
+
+ // TODO: export QQuickFlickableVisibleArea
+ QObject *area = d->flickable->property("visibleArea").value<QObject *>();
+ connect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal)));
+ connect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal)));
+
+ d->layoutVertical();
+ vertical->setSize(area->property("heightRatio").toReal());
+ vertical->setPosition(area->property("yPosition").toReal());
}
+ emit verticalChanged();
}
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/templates/qquickscrollindicator_p.h b/src/templates/qquickscrollindicator_p.h
index 1f5f07b7..e669928d 100644
--- a/src/templates/qquickscrollindicator_p.h
+++ b/src/templates/qquickscrollindicator_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -56,17 +56,16 @@ class QQuickFlickable;
class QQuickScrollIndicatorAttached;
class QQuickScrollIndicatorPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickScrollIndicator : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickScrollIndicator : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal size READ size WRITE setSize NOTIFY sizeChanged FINAL)
Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL)
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged FINAL)
Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL)
- Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL)
public:
- explicit QQuickScrollIndicator(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickScrollIndicator(QQuickItem *parent = nullptr);
static QQuickScrollIndicatorAttached *qmlAttachedProperties(QObject *object);
@@ -79,9 +78,6 @@ public:
Qt::Orientation orientation() const;
void setOrientation(Qt::Orientation orientation);
- QQuickItem *indicator() const;
- void setIndicator(QQuickItem *indicator);
-
public Q_SLOTS:
void setSize(qreal size);
void setPosition(qreal position);
@@ -91,11 +87,10 @@ Q_SIGNALS:
void positionChanged();
void activeChanged();
void orientationChanged();
- void indicatorChanged();
protected:
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
@@ -105,7 +100,7 @@ private:
class QQuickScrollIndicatorAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickScrollIndicatorAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickScrollIndicatorAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickScrollIndicator *horizontal READ horizontal WRITE setHorizontal NOTIFY horizontalChanged FINAL)
diff --git a/src/templates/qquickslider.cpp b/src/templates/qquickslider.cpp
index fac8fb50..8f8cd3db 100644
--- a/src/templates/qquickslider.cpp
+++ b/src/templates/qquickslider.cpp
@@ -47,18 +47,18 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickSlider
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-input
- \brief A slider control.
+ \brief Selects a value by sliding a handle along a track.
- \image qtlabscontrols-slider.gif
+ \image qtquickcontrols-slider.gif
Slider is used to select a value by sliding a handle along a track.
\table
- \row \li \image qtlabscontrols-slider-normal.png
+ \row \li \image qtquickcontrols-slider-normal.png
\li A slider in its normal state.
- \row \li \image qtlabscontrols-slider-focused.png
+ \row \li \image qtquickcontrols-slider-focused.png
\li A slider that has active focus.
- \row \li \image qtlabscontrols-slider-disabled.png
+ \row \li \image qtquickcontrols-slider-disabled.png
\li A slider that is disabled.
\endtable
@@ -80,7 +80,7 @@ class QQuickSliderPrivate : public QQuickControlPrivate
public:
QQuickSliderPrivate() : from(0), to(1), value(0), position(0), stepSize(0), pressed(false),
orientation(Qt::Horizontal), snapMode(QQuickSlider::NoSnap),
- handle(Q_NULLPTR), track(Q_NULLPTR)
+ handle(nullptr)
{
}
@@ -100,7 +100,6 @@ public:
Qt::Orientation orientation;
QQuickSlider::SnapMode snapMode;
QQuickItem *handle;
- QQuickItem *track;
};
qreal QQuickSliderPrivate::valueAt(qreal position) const
@@ -147,11 +146,12 @@ void QQuickSliderPrivate::setPosition(qreal pos)
{
Q_Q(QQuickSlider);
pos = qBound<qreal>(0.0, pos, 1.0);
- if (!qFuzzyCompare(position, pos)) {
- position = pos;
- emit q->positionChanged();
- emit q->visualPositionChanged();
- }
+ if (qFuzzyCompare(position, pos))
+ return;
+
+ position = pos;
+ emit q->positionChanged();
+ emit q->visualPositionChanged();
}
void QQuickSliderPrivate::updatePosition()
@@ -185,13 +185,14 @@ qreal QQuickSlider::from() const
void QQuickSlider::setFrom(qreal from)
{
Q_D(QQuickSlider);
- if (!qFuzzyCompare(d->from, from)) {
- d->from = from;
- emit fromChanged();
- if (isComponentComplete()) {
- setValue(d->value);
- d->updatePosition();
- }
+ if (qFuzzyCompare(d->from, from))
+ return;
+
+ d->from = from;
+ emit fromChanged();
+ if (isComponentComplete()) {
+ setValue(d->value);
+ d->updatePosition();
}
}
@@ -211,13 +212,14 @@ qreal QQuickSlider::to() const
void QQuickSlider::setTo(qreal to)
{
Q_D(QQuickSlider);
- if (!qFuzzyCompare(d->to, to)) {
- d->to = to;
- emit toChanged();
- if (isComponentComplete()) {
- setValue(d->value);
- d->updatePosition();
- }
+ if (qFuzzyCompare(d->to, to))
+ return;
+
+ d->to = to;
+ emit toChanged();
+ if (isComponentComplete()) {
+ setValue(d->value);
+ d->updatePosition();
}
}
@@ -244,11 +246,12 @@ void QQuickSlider::setValue(qreal value)
if (isComponentComplete())
value = d->from > d->to ? qBound(d->to, value, d->from) : qBound(d->from, value, d->to);
- if (!qFuzzyCompare(d->value, value)) {
- d->value = value;
- d->updatePosition();
- emit valueChanged();
- }
+ if (qFuzzyCompare(d->value, value))
+ return;
+
+ d->value = value;
+ d->updatePosition();
+ emit valueChanged();
}
/*!
@@ -307,10 +310,11 @@ qreal QQuickSlider::stepSize() const
void QQuickSlider::setStepSize(qreal step)
{
Q_D(QQuickSlider);
- if (!qFuzzyCompare(d->stepSize, step)) {
- d->stepSize = step;
- emit stepSizeChanged();
- }
+ if (qFuzzyCompare(d->stepSize, step))
+ return;
+
+ d->stepSize = step;
+ emit stepSizeChanged();
}
/*!
@@ -334,10 +338,11 @@ QQuickSlider::SnapMode QQuickSlider::snapMode() const
void QQuickSlider::setSnapMode(SnapMode mode)
{
Q_D(QQuickSlider);
- if (d->snapMode != mode) {
- d->snapMode = mode;
- emit snapModeChanged();
- }
+ if (d->snapMode == mode)
+ return;
+
+ d->snapMode = mode;
+ emit snapModeChanged();
}
/*!
@@ -354,11 +359,12 @@ bool QQuickSlider::isPressed() const
void QQuickSlider::setPressed(bool pressed)
{
Q_D(QQuickSlider);
- if (d->pressed != pressed) {
- d->pressed = pressed;
- setAccessibleProperty("pressed", pressed);
- emit pressedChanged();
- }
+ if (d->pressed == pressed)
+ return;
+
+ d->pressed = pressed;
+ setAccessibleProperty("pressed", pressed);
+ emit pressedChanged();
}
/*!
@@ -379,10 +385,11 @@ Qt::Orientation QQuickSlider::orientation() const
void QQuickSlider::setOrientation(Qt::Orientation orientation)
{
Q_D(QQuickSlider);
- if (d->orientation != orientation) {
- d->orientation = orientation;
- emit orientationChanged();
- }
+ if (d->orientation == orientation)
+ return;
+
+ d->orientation = orientation;
+ emit orientationChanged();
}
/*!
@@ -401,38 +408,14 @@ QQuickItem *QQuickSlider::handle() const
void QQuickSlider::setHandle(QQuickItem *handle)
{
Q_D(QQuickSlider);
- if (d->handle != handle) {
- delete d->handle;
- d->handle = handle;
- if (handle && !handle->parentItem())
- handle->setParentItem(this);
- emit handleChanged();
- }
-}
-
-/*!
- \qmlproperty Item Qt.labs.controls::Slider::track
-
- This property holds the track item.
+ if (d->handle == handle)
+ return;
- \sa {Customizing Slider}
-*/
-QQuickItem *QQuickSlider::track() const
-{
- Q_D(const QQuickSlider);
- return d->track;
-}
-
-void QQuickSlider::setTrack(QQuickItem *track)
-{
- Q_D(QQuickSlider);
- if (d->track != track) {
- delete d->track;
- d->track = track;
- if (track && !track->parentItem())
- track->setParentItem(this);
- emit trackChanged();
- }
+ delete d->handle;
+ d->handle = handle;
+ if (handle && !handle->parentItem())
+ handle->setParentItem(this);
+ emit handleChanged();
}
/*!
@@ -555,6 +538,20 @@ void QQuickSlider::mouseUngrabEvent()
setPressed(false);
}
+void QQuickSlider::wheelEvent(QWheelEvent *event)
+{
+ Q_D(QQuickSlider);
+ QQuickControl::wheelEvent(event);
+ if (d->wheelEnabled) {
+ const qreal oldValue = d->value;
+ const QPointF angle = event->angleDelta();
+ const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : angle.y()) / QWheelEvent::DefaultDeltasPerStep;
+ const qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize;
+ setValue(oldValue + step * delta);
+ event->setAccepted(!qFuzzyCompare(d->value, oldValue));
+ }
+}
+
void QQuickSlider::mirrorChange()
{
QQuickControl::mirrorChange();
diff --git a/src/templates/qquickslider_p.h b/src/templates/qquickslider_p.h
index 663ad684..cff734fd 100644
--- a/src/templates/qquickslider_p.h
+++ b/src/templates/qquickslider_p.h
@@ -48,13 +48,13 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickSliderPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickSlider : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickSlider : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL)
@@ -67,10 +67,9 @@ class Q_LABSTEMPLATES_EXPORT QQuickSlider : public QQuickControl
Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL)
Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL)
Q_PROPERTY(QQuickItem *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL)
- Q_PROPERTY(QQuickItem *track READ track WRITE setTrack NOTIFY trackChanged FINAL)
public:
- explicit QQuickSlider(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickSlider(QQuickItem *parent = nullptr);
qreal from() const;
void setFrom(qreal from);
@@ -106,9 +105,6 @@ public:
QQuickItem *handle() const;
void setHandle(QQuickItem *handle);
- QQuickItem *track() const;
- void setTrack(QQuickItem *track);
-
public Q_SLOTS:
void increase();
void decrease();
@@ -124,21 +120,22 @@ Q_SIGNALS:
void pressedChanged();
void orientationChanged();
void handleChanged();
- void trackChanged();
protected:
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void mirrorChange() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void wheelEvent(QWheelEvent *event) override;
+
+ void mirrorChange() override;
+ void componentComplete() override;
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquickspinbox.cpp b/src/templates/qquickspinbox.cpp
index 64c94e7a..a18e2bde 100644
--- a/src/templates/qquickspinbox.cpp
+++ b/src/templates/qquickspinbox.cpp
@@ -56,29 +56,30 @@ static const int AUTO_REPEAT_INTERVAL = 100;
\instantiates QQuickSpinBox
\inqmlmodule Qt.labs.controls
\ingroup input
- \brief A spinbox control.
+ \brief A spinbox control that allows the user to select from a set of preset values.
- \image qtlabscontrols-spinbox.png
+ \image qtquickcontrols-spinbox.png
SpinBox allows the user to choose an integer value by clicking the up
- or down indicator buttons, by pressing up or down on the keyboard, or
- by entering a text value in the input field.
+ or down indicator buttons, or by pressing up or down on the keyboard.
+ Optionally, SpinBox can be also made \l editable, so the user can enter
+ a text value in the input field.
By default, SpinBox provides discrete values in the range of \c [0-99]
with a \l stepSize of \c 1.
- \snippet qtlabscontrols-spinbox.qml 1
+ \snippet qtquickcontrols-spinbox.qml 1
\section2 Custom Values
- \image qtlabscontrols-spinbox-textual.png
+ \image qtquickcontrols-spinbox-textual.png
Even though SpinBox works on integer values, it can be customized to
accept arbitrary input values. The following snippet demonstrates how
\l validator, \l textFromValue and \l valueFromText can be used to
customize the default behavior.
- \snippet qtlabscontrols-spinbox-textual.qml 1
+ \snippet qtquickcontrols-spinbox-textual.qml 1
\labs
@@ -90,8 +91,8 @@ class QQuickSpinBoxPrivate : public QQuickControlPrivate
Q_DECLARE_PUBLIC(QQuickSpinBox)
public:
- QQuickSpinBoxPrivate() : from(0), to(99), value(0), stepSize(1),
- delayTimer(0), repeatTimer(0), up(Q_NULLPTR), down(Q_NULLPTR), validator(Q_NULLPTR) { }
+ QQuickSpinBoxPrivate() : editable(false), from(0), to(99), value(0), stepSize(1),
+ delayTimer(0), repeatTimer(0), up(nullptr), down(nullptr), validator(nullptr) { }
int boundValue(int value) const;
void updateValue();
@@ -107,6 +108,7 @@ public:
bool handleMouseReleaseEvent(QQuickItem *child, QMouseEvent *event);
bool handleMouseUngrabEvent(QQuickItem *child);
+ bool editable;
int from;
int to;
int value;
@@ -263,12 +265,13 @@ int QQuickSpinBox::from() const
void QQuickSpinBox::setFrom(int from)
{
Q_D(QQuickSpinBox);
- if (d->from != from) {
- d->from = from;
- emit fromChanged();
- if (isComponentComplete())
- setValue(d->value);
- }
+ if (d->from == from)
+ return;
+
+ d->from = from;
+ emit fromChanged();
+ if (isComponentComplete())
+ setValue(d->value);
}
/*!
@@ -287,12 +290,13 @@ int QQuickSpinBox::to() const
void QQuickSpinBox::setTo(int to)
{
Q_D(QQuickSpinBox);
- if (d->to != to) {
- d->to = to;
- emit toChanged();
- if (isComponentComplete())
- setValue(d->value);
- }
+ if (d->to == to)
+ return;
+
+ d->to = to;
+ emit toChanged();
+ if (isComponentComplete())
+ setValue(d->value);
}
/*!
@@ -312,10 +316,11 @@ void QQuickSpinBox::setValue(int value)
if (isComponentComplete())
value = d->boundValue(value);
- if (d->value != value) {
- d->value = value;
- emit valueChanged();
- }
+ if (d->value == value)
+ return;
+
+ d->value = value;
+ emit valueChanged();
}
/*!
@@ -334,21 +339,45 @@ int QQuickSpinBox::stepSize() const
void QQuickSpinBox::setStepSize(int step)
{
Q_D(QQuickSpinBox);
- if (d->stepSize != step) {
- d->stepSize = step;
- emit stepSizeChanged();
- }
+ if (d->stepSize == step)
+ return;
+
+ d->stepSize = step;
+ emit stepSizeChanged();
+}
+
+/*!
+ \qmlproperty bool Qt.labs.controls::SpinBox::editable
+
+ This property holds whether the spinbox is editable. The default value is \c false.
+
+ \sa validator
+*/
+bool QQuickSpinBox::isEditable() const
+{
+ Q_D(const QQuickSpinBox);
+ return d->editable;
+}
+
+void QQuickSpinBox::setEditable(bool editable)
+{
+ Q_D(QQuickSpinBox);
+ if (d->editable == editable)
+ return;
+
+ d->editable = editable;
+ emit editableChanged();
}
/*!
\qmlproperty Validator Qt.labs.controls::SpinBox::validator
- This property holds the input text validator. By default, SpinBox uses
- \l IntValidator to accept input of integer numbers.
+ This property holds the input text validator for editable spinboxes. By
+ default, SpinBox uses \l IntValidator to accept input of integer numbers.
\snippet SpinBox.qml validator
- \sa textFromValue, valueFromText, {Control::locale}{locale}
+ \sa editable, textFromValue, valueFromText, {Control::locale}{locale}
*/
QValidator *QQuickSpinBox::validator() const
{
@@ -359,10 +388,11 @@ QValidator *QQuickSpinBox::validator() const
void QQuickSpinBox::setValidator(QValidator *validator)
{
Q_D(QQuickSpinBox);
- if (d->validator != validator) {
- d->validator = validator;
- emit validatorChanged();
- }
+ if (d->validator == validator)
+ return;
+
+ d->validator = validator;
+ emit validatorChanged();
}
/*!
@@ -600,6 +630,19 @@ void QQuickSpinBox::timerEvent(QTimerEvent *event)
}
}
+void QQuickSpinBox::wheelEvent(QWheelEvent *event)
+{
+ Q_D(QQuickSpinBox);
+ QQuickControl::wheelEvent(event);
+ if (d->wheelEnabled) {
+ const int oldValue = d->value;
+ const QPointF angle = event->angleDelta();
+ const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : angle.y()) / QWheelEvent::DefaultDeltasPerStep;
+ setValue(oldValue + qRound(d->effectiveStepSize() * delta));
+ event->setAccepted(d->value != oldValue);
+ }
+}
+
void QQuickSpinBox::itemChange(ItemChange change, const ItemChangeData &value)
{
Q_D(QQuickSpinBox);
@@ -615,6 +658,11 @@ void QQuickSpinBox::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
newItem->setActiveFocusOnTab(true);
}
+QFont QQuickSpinBox::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont);
+}
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role QQuickSpinBox::accessibleRole() const
{
@@ -625,7 +673,7 @@ QAccessible::Role QQuickSpinBox::accessibleRole() const
class QQuickSpinButtonPrivate : public QObjectPrivate
{
public:
- QQuickSpinButtonPrivate() : pressed(false), indicator(Q_NULLPTR) { }
+ QQuickSpinButtonPrivate() : pressed(false), indicator(nullptr) { }
bool pressed;
QQuickItem *indicator;
};
@@ -644,10 +692,11 @@ bool QQuickSpinButton::isPressed() const
void QQuickSpinButton::setPressed(bool pressed)
{
Q_D(QQuickSpinButton);
- if (d->pressed != pressed) {
- d->pressed = pressed;
- emit pressedChanged();
- }
+ if (d->pressed == pressed)
+ return;
+
+ d->pressed = pressed;
+ emit pressedChanged();
}
QQuickItem *QQuickSpinButton::indicator() const
@@ -659,16 +708,17 @@ QQuickItem *QQuickSpinButton::indicator() const
void QQuickSpinButton::setIndicator(QQuickItem *indicator)
{
Q_D(QQuickSpinButton);
- if (d->indicator != indicator) {
- delete d->indicator;
- d->indicator = indicator;
- if (indicator) {
- if (!indicator->parentItem())
- indicator->setParentItem(static_cast<QQuickItem *>(parent()));
- indicator->setAcceptedMouseButtons(Qt::LeftButton);
- }
- emit indicatorChanged();
+ if (d->indicator == indicator)
+ return;
+
+ delete d->indicator;
+ d->indicator = indicator;
+ if (indicator) {
+ if (!indicator->parentItem())
+ indicator->setParentItem(static_cast<QQuickItem *>(parent()));
+ indicator->setAcceptedMouseButtons(Qt::LeftButton);
}
+ emit indicatorChanged();
}
QT_END_NAMESPACE
diff --git a/src/templates/qquickspinbox_p.h b/src/templates/qquickspinbox_p.h
index c7d1f6c6..c51f8f77 100644
--- a/src/templates/qquickspinbox_p.h
+++ b/src/templates/qquickspinbox_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
#include <QtQml/qjsvalue.h>
QT_BEGIN_NAMESPACE
@@ -58,13 +58,14 @@ class QQuickSpinButton;
class QQuickSpinButtonPrivate;
class QQuickSpinBoxPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickSpinBox : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickSpinBox : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(int from READ from WRITE setFrom NOTIFY fromChanged FINAL)
Q_PROPERTY(int to READ to WRITE setTo NOTIFY toChanged FINAL)
Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged FINAL)
Q_PROPERTY(int stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL)
+ Q_PROPERTY(bool editable READ isEditable WRITE setEditable NOTIFY editableChanged FINAL)
Q_PROPERTY(QValidator *validator READ validator WRITE setValidator NOTIFY validatorChanged FINAL)
Q_PROPERTY(QJSValue textFromValue READ textFromValue WRITE setTextFromValue NOTIFY textFromValueChanged FINAL)
Q_PROPERTY(QJSValue valueFromText READ valueFromText WRITE setValueFromText NOTIFY valueFromTextChanged FINAL)
@@ -72,7 +73,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickSpinBox : public QQuickControl
Q_PROPERTY(QQuickSpinButton *down READ down CONSTANT FINAL)
public:
- explicit QQuickSpinBox(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickSpinBox(QQuickItem *parent = nullptr);
int from() const;
void setFrom(int from);
@@ -86,6 +87,9 @@ public:
int stepSize() const;
void setStepSize(int step);
+ bool isEditable() const;
+ void setEditable(bool editable);
+
QValidator *validator() const;
void setValidator(QValidator *validator);
@@ -107,25 +111,29 @@ Q_SIGNALS:
void toChanged();
void valueChanged();
void stepSizeChanged();
+ void editableChanged();
void validatorChanged();
void textFromValueChanged();
void valueFromTextChanged();
protected:
- bool childMouseEventFilter(QQuickItem *child, QEvent *event) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseUngrabEvent() Q_DECL_OVERRIDE;
- void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
-
- void itemChange(ItemChange change, const ItemChangeData &value) Q_DECL_OVERRIDE;
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void mouseUngrabEvent() override;
+ void timerEvent(QTimerEvent *event) override;
+ void wheelEvent(QWheelEvent *event) override;
+
+ void itemChange(ItemChange change, const ItemChangeData &value) override;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
+
+ QFont defaultFont() const override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
@@ -133,7 +141,7 @@ private:
Q_DECLARE_PRIVATE(QQuickSpinBox)
};
-class Q_LABSTEMPLATES_EXPORT QQuickSpinButton : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickSpinButton : public QObject
{
Q_OBJECT
Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL)
diff --git a/src/templates/qquickstackview.cpp b/src/templates/qquickstackview.cpp
index bfa01e72..d1016455 100644
--- a/src/templates/qquickstackview.cpp
+++ b/src/templates/qquickstackview.cpp
@@ -52,10 +52,10 @@ QT_BEGIN_NAMESPACE
\ingroup qtlabscontrols-containers
\brief Provides a stack-based navigation model.
- \image qtlabscontrols-stackview-wireframe.png
+ \image qtquickcontrols-stackview-wireframe.png
StackView can be used with a set of inter-linked information pages. For
- example, an email application with separate views to list latest emails,
+ example, an email application with separate views to list the latest emails,
view a specific email, and list/view the attachments. The email list view
is pushed onto the stack as users open an email, and popped out as they
choose to go back.
@@ -278,7 +278,7 @@ QQuickStackView::~QQuickStackView()
{
Q_D(QQuickStackView);
if (d->transitioner) {
- d->transitioner->setChangeListener(Q_NULLPTR);
+ d->transitioner->setChangeListener(nullptr);
delete d->transitioner;
}
qDeleteAll(d->removals);
@@ -290,7 +290,7 @@ QQuickStackAttached *QQuickStackView::qmlAttachedProperties(QObject *object)
QQuickItem *item = qobject_cast<QQuickItem *>(object);
if (!item) {
qmlInfo(object) << "StackView must be attached to an Item";
- return Q_NULLPTR;
+ return nullptr;
}
return new QQuickStackAttached(item);
}
@@ -347,7 +347,7 @@ QQuickItem *QQuickStackView::get(int index, LoadBehavior behavior)
element->load(this);
return element->item;
}
- return Q_NULLPTR;
+ return nullptr;
}
/*!
@@ -373,7 +373,7 @@ QQuickItem *QQuickStackView::find(const QJSValue &callback, LoadBehavior behavio
QJSValue func(callback);
QQmlEngine *engine = qmlEngine(this);
if (!engine || !func.isCallable()) // TODO: warning?
- return Q_NULLPTR;
+ return nullptr;
for (int i = d->elements.count() - 1; i >= 0; --i) {
QQuickStackElement *element = d->elements.at(i);
@@ -386,7 +386,7 @@ QQuickItem *QQuickStackView::find(const QJSValue &callback, LoadBehavior behavio
}
}
- return Q_NULLPTR;
+ return nullptr;
}
/*!
@@ -457,7 +457,7 @@ void QQuickStackView::push(QQmlV4Function *args)
return;
}
- QQuickStackElement *exit = Q_NULLPTR;
+ QQuickStackElement *exit = nullptr;
if (!d->elements.isEmpty())
exit = d->elements.top();
@@ -541,7 +541,7 @@ void QQuickStackView::pop(QQmlV4Function *args)
operation = static_cast<Operation>(lastArg->toInt32());
}
- QQuickItem *previousItem = Q_NULLPTR;
+ QQuickItem *previousItem = nullptr;
if (d->popElements(enter)) {
if (exit)
@@ -624,7 +624,7 @@ void QQuickStackView::replace(QQmlV4Function *args)
if (lastArg->isInt32())
operation = static_cast<Operation>(lastArg->toInt32());
- QQuickStackElement *target = Q_NULLPTR;
+ QQuickStackElement *target = nullptr;
QV4::ScopedValue firstArg(scope, (*args)[0]);
if (firstArg->isNull())
target = d->elements.value(0);
@@ -639,7 +639,7 @@ void QQuickStackView::replace(QQmlV4Function *args)
}
int depth = d->elements.count();
- QQuickStackElement* exit = Q_NULLPTR;
+ QQuickStackElement* exit = nullptr;
if (!d->elements.isEmpty())
exit = d->elements.pop();
@@ -667,7 +667,7 @@ void QQuickStackView::replace(QQmlV4Function *args)
void QQuickStackView::clear()
{
Q_D(QQuickStackView);
- d->setCurrentItem(Q_NULLPTR);
+ d->setCurrentItem(nullptr);
qDeleteAll(d->elements);
d->elements.clear();
emit depthChanged();
@@ -710,17 +710,18 @@ QQuickTransition *QQuickStackView::popEnter() const
Q_D(const QQuickStackView);
if (d->transitioner)
return d->transitioner->removeDisplacedTransition;
- return Q_NULLPTR;
+ return nullptr;
}
void QQuickStackView::setPopEnter(QQuickTransition *enter)
{
Q_D(QQuickStackView);
d->ensureTransitioner();
- if (d->transitioner->removeDisplacedTransition != enter) {
- d->transitioner->removeDisplacedTransition = enter;
- emit popEnterChanged();
- }
+ if (d->transitioner->removeDisplacedTransition == enter)
+ return;
+
+ d->transitioner->removeDisplacedTransition = enter;
+ emit popEnterChanged();
}
/*!
@@ -736,17 +737,18 @@ QQuickTransition *QQuickStackView::popExit() const
Q_D(const QQuickStackView);
if (d->transitioner)
return d->transitioner->removeTransition;
- return Q_NULLPTR;
+ return nullptr;
}
void QQuickStackView::setPopExit(QQuickTransition *exit)
{
Q_D(QQuickStackView);
d->ensureTransitioner();
- if (d->transitioner->removeTransition != exit) {
- d->transitioner->removeTransition = exit;
- emit popExitChanged();
- }
+ if (d->transitioner->removeTransition == exit)
+ return;
+
+ d->transitioner->removeTransition = exit;
+ emit popExitChanged();
}
/*!
@@ -762,17 +764,18 @@ QQuickTransition *QQuickStackView::pushEnter() const
Q_D(const QQuickStackView);
if (d->transitioner)
return d->transitioner->addTransition;
- return Q_NULLPTR;
+ return nullptr;
}
void QQuickStackView::setPushEnter(QQuickTransition *enter)
{
Q_D(QQuickStackView);
d->ensureTransitioner();
- if (d->transitioner->addTransition != enter) {
- d->transitioner->addTransition = enter;
- emit pushEnterChanged();
- }
+ if (d->transitioner->addTransition == enter)
+ return;
+
+ d->transitioner->addTransition = enter;
+ emit pushEnterChanged();
}
/*!
@@ -788,17 +791,18 @@ QQuickTransition *QQuickStackView::pushExit() const
Q_D(const QQuickStackView);
if (d->transitioner)
return d->transitioner->addDisplacedTransition;
- return Q_NULLPTR;
+ return nullptr;
}
void QQuickStackView::setPushExit(QQuickTransition *exit)
{
Q_D(QQuickStackView);
d->ensureTransitioner();
- if (d->transitioner->addDisplacedTransition != exit) {
- d->transitioner->addDisplacedTransition = exit;
- emit pushExitChanged();
- }
+ if (d->transitioner->addDisplacedTransition == exit)
+ return;
+
+ d->transitioner->addDisplacedTransition = exit;
+ emit pushExitChanged();
}
/*!
@@ -814,17 +818,18 @@ QQuickTransition *QQuickStackView::replaceEnter() const
Q_D(const QQuickStackView);
if (d->transitioner)
return d->transitioner->moveTransition;
- return Q_NULLPTR;
+ return nullptr;
}
void QQuickStackView::setReplaceEnter(QQuickTransition *enter)
{
Q_D(QQuickStackView);
d->ensureTransitioner();
- if (d->transitioner->moveTransition != enter) {
- d->transitioner->moveTransition = enter;
- emit replaceEnterChanged();
- }
+ if (d->transitioner->moveTransition == enter)
+ return;
+
+ d->transitioner->moveTransition = enter;
+ emit replaceEnterChanged();
}
/*!
@@ -840,17 +845,18 @@ QQuickTransition *QQuickStackView::replaceExit() const
Q_D(const QQuickStackView);
if (d->transitioner)
return d->transitioner->moveDisplacedTransition;
- return Q_NULLPTR;
+ return nullptr;
}
void QQuickStackView::setReplaceExit(QQuickTransition *exit)
{
Q_D(QQuickStackView);
d->ensureTransitioner();
- if (d->transitioner->moveDisplacedTransition != exit) {
- d->transitioner->moveDisplacedTransition = exit;
- emit replaceExitChanged();
- }
+ if (d->transitioner->moveDisplacedTransition == exit)
+ return;
+
+ d->transitioner->moveDisplacedTransition = exit;
+ emit replaceExitChanged();
}
void QQuickStackView::componentComplete()
@@ -858,7 +864,7 @@ void QQuickStackView::componentComplete()
QQuickControl::componentComplete();
Q_D(QQuickStackView);
- QQuickStackElement *element = Q_NULLPTR;
+ QQuickStackElement *element = nullptr;
if (QObject *o = d->initialItem.value<QObject *>())
element = QQuickStackElement::fromObject(o, this);
else if (d->initialItem.canConvert<QString>())
@@ -875,7 +881,7 @@ void QQuickStackView::geometryChanged(const QRectF &newGeometry, const QRectF &o
QQuickControl::geometryChanged(newGeometry, oldGeometry);
Q_D(QQuickStackView);
- foreach (QQuickStackElement *element, d->elements) {
+ for (QQuickStackElement *element : qAsConst(d->elements)) {
if (element->item) {
if (!element->widthValid)
element->item->setWidth(newGeometry.width());
@@ -903,11 +909,11 @@ void QQuickStackAttachedPrivate::itemParentChanged(QQuickItem *item, QQuickItem
{
Q_Q(QQuickStackAttached);
int oldIndex = element ? element->index : -1;
- QQuickStackView *oldView = element ? element->view : Q_NULLPTR;
+ QQuickStackView *oldView = element ? element->view : nullptr;
QQuickStackView::Status oldStatus = element ? element->status : QQuickStackView::Inactive;
QQuickStackView *newView = qobject_cast<QQuickStackView *>(parent);
- element = newView ? QQuickStackViewPrivate::get(newView)->findElement(item) : Q_NULLPTR;
+ element = newView ? QQuickStackViewPrivate::get(newView)->findElement(item) : nullptr;
int newIndex = element ? element->index : -1;
QQuickStackView::Status newStatus = element ? element->status : QQuickStackView::Inactive;
@@ -958,7 +964,7 @@ int QQuickStackAttached::index() const
QQuickStackView *QQuickStackAttached::view() const
{
Q_D(const QQuickStackAttached);
- return d->element ? d->element->view : Q_NULLPTR;
+ return d->element ? d->element->view : nullptr;
}
/*!
diff --git a/src/templates/qquickstackview_p.cpp b/src/templates/qquickstackview_p.cpp
index 101f1f68..196e77e3 100644
--- a/src/templates/qquickstackview_p.cpp
+++ b/src/templates/qquickstackview_p.cpp
@@ -63,15 +63,15 @@ public:
QQuickStackIncubator(QQuickStackElement *element) : QQmlIncubator(Synchronous), element(element) { }
protected:
- void setInitialState(QObject *object) Q_DECL_OVERRIDE { element->incubate(object); }
+ void setInitialState(QObject *object) override { element->incubate(object); }
private:
QQuickStackElement *element;
};
-QQuickStackElement::QQuickStackElement() : QQuickItemViewTransitionableItem(Q_NULLPTR),
+QQuickStackElement::QQuickStackElement() : QQuickItemViewTransitionableItem(nullptr),
index(-1), init(false), removal(false), ownItem(false), ownComponent(false), widthValid(false), heightValid(false),
- context(Q_NULLPTR), component(Q_NULLPTR), incubator(Q_NULLPTR), view(Q_NULLPTR),
+ context(nullptr), component(nullptr), incubator(nullptr), view(nullptr),
status(QQuickStackView::Inactive)
{
}
@@ -86,9 +86,9 @@ QQuickStackElement::~QQuickStackElement()
if (item) {
if (ownItem) {
- item->setParentItem(Q_NULLPTR);
+ item->setParentItem(nullptr);
item->deleteLater();
- item = Q_NULLPTR;
+ item = nullptr;
} else {
item->setVisible(false);
if (item->parentItem() != originalParent) {
@@ -96,7 +96,7 @@ QQuickStackElement::~QQuickStackElement()
} else {
QQuickStackAttached *attached = attachedStackObject(this);
if (attached)
- QQuickStackAttachedPrivate::get(attached)->itemParentChanged(item, Q_NULLPTR);
+ QQuickStackAttachedPrivate::get(attached)->itemParentChanged(item, nullptr);
}
}
}
@@ -188,32 +188,35 @@ void QQuickStackElement::initialize()
void QQuickStackElement::setIndex(int value)
{
- if (index != value) {
- index = value;
- QQuickStackAttached *attached = attachedStackObject(this);
- if (attached)
- emit attached->indexChanged();
- }
+ if (index == value)
+ return;
+
+ index = value;
+ QQuickStackAttached *attached = attachedStackObject(this);
+ if (attached)
+ emit attached->indexChanged();
}
void QQuickStackElement::setView(QQuickStackView *value)
{
- if (view != value) {
- view = value;
- QQuickStackAttached *attached = attachedStackObject(this);
- if (attached)
- emit attached->viewChanged();
- }
+ if (view == value)
+ return;
+
+ view = value;
+ QQuickStackAttached *attached = attachedStackObject(this);
+ if (attached)
+ emit attached->viewChanged();
}
void QQuickStackElement::setStatus(QQuickStackView::Status value)
{
- if (status != value) {
- status = value;
- QQuickStackAttached *attached = attachedStackObject(this);
- if (attached)
- emit attached->statusChanged();
- }
+ if (status == value)
+ return;
+
+ status = value;
+ QQuickStackAttached *attached = attachedStackObject(this);
+ if (attached)
+ emit attached->statusChanged();
}
void QQuickStackElement::transitionNextReposition(QQuickItemViewTransitioner *transitioner, QQuickItemViewTransitioner::TransitionType type, bool asTarget)
@@ -249,22 +252,23 @@ void QQuickStackElement::startTransition(QQuickItemViewTransitioner *transitione
void QQuickStackElement::itemDestroyed(QQuickItem *)
{
- item = Q_NULLPTR;
+ item = nullptr;
}
-QQuickStackViewPrivate::QQuickStackViewPrivate() : busy(false), currentItem(Q_NULLPTR), transitioner(Q_NULLPTR)
+QQuickStackViewPrivate::QQuickStackViewPrivate() : busy(false), currentItem(nullptr), transitioner(nullptr)
{
}
void QQuickStackViewPrivate::setCurrentItem(QQuickItem *item)
{
Q_Q(QQuickStackView);
- if (currentItem != item) {
- currentItem = item;
- if (item)
- item->setVisible(true);
- emit q->currentItemChanged();
- }
+ if (currentItem == item)
+ return;
+
+ currentItem = item;
+ if (item)
+ item->setVisible(true);
+ emit q->currentItemChanged();
}
static bool initProperties(QQuickStackElement *element, const QV4::Value &props, QQmlV4Function *args)
@@ -322,19 +326,19 @@ QList<QQuickStackElement *> QQuickStackViewPrivate::parseElements(QQmlV4Function
QQuickStackElement *QQuickStackViewPrivate::findElement(QQuickItem *item) const
{
if (item) {
- foreach (QQuickStackElement *e, elements) {
+ for (QQuickStackElement *e : qAsConst(elements)) {
if (e->item == item)
return e;
}
}
- return Q_NULLPTR;
+ return nullptr;
}
QQuickStackElement *QQuickStackViewPrivate::findElement(const QV4::Value &value) const
{
if (const QV4::QObjectWrapper *o = value.as<QV4::QObjectWrapper>())
return findElement(qobject_cast<QQuickItem *>(o->object()));
- return Q_NULLPTR;
+ return nullptr;
}
QQuickStackElement *QQuickStackViewPrivate::createElement(const QV4::Value &value)
@@ -344,14 +348,14 @@ QQuickStackElement *QQuickStackViewPrivate::createElement(const QV4::Value &valu
return QQuickStackElement::fromString(s->toQString(), q);
if (const QV4::QObjectWrapper *o = value.as<QV4::QObjectWrapper>())
return QQuickStackElement::fromObject(o->object(), q);
- return Q_NULLPTR;
+ return nullptr;
}
bool QQuickStackViewPrivate::pushElements(const QList<QQuickStackElement *> &elems)
{
Q_Q(QQuickStackView);
if (!elems.isEmpty()) {
- foreach (QQuickStackElement *e, elems) {
+ for (QQuickStackElement *e : elems) {
e->setIndex(elements.count());
elements += e;
}
@@ -370,12 +374,10 @@ bool QQuickStackViewPrivate::pushElement(QQuickStackElement *element)
bool QQuickStackViewPrivate::popElements(QQuickStackElement *element)
{
Q_Q(QQuickStackView);
- if (elements.count() > 1) {
- while (elements.count() > 1 && elements.top() != element) {
- delete elements.pop();
- if (!element)
- break;
- }
+ while (elements.count() > 1 && elements.top() != element) {
+ delete elements.pop();
+ if (!element)
+ break;
}
return elements.top()->load(q);
}
@@ -536,11 +538,12 @@ void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransition
void QQuickStackViewPrivate::setBusy(bool b)
{
Q_Q(QQuickStackView);
- if (busy != b) {
- busy = b;
- q->setFiltersChildMouseEvents(busy);
- emit q->busyChanged();
- }
+ if (busy == b)
+ return;
+
+ busy = b;
+ q->setFiltersChildMouseEvents(busy);
+ emit q->busyChanged();
}
QT_END_NAMESPACE
diff --git a/src/templates/qquickstackview_p.h b/src/templates/qquickstackview_p.h
index 6b78b50a..0c76908c 100644
--- a/src/templates/qquickstackview_p.h
+++ b/src/templates/qquickstackview_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
@@ -58,7 +58,7 @@ class QQuickStackElement;
class QQuickStackAttached;
class QQuickStackViewPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickStackView : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickStackView : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(bool busy READ isBusy NOTIFY busyChanged FINAL)
@@ -73,7 +73,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickStackView : public QQuickControl
Q_PROPERTY(QQuickTransition *replaceExit READ replaceExit WRITE setReplaceExit NOTIFY replaceExitChanged FINAL)
public:
- explicit QQuickStackView(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickStackView(QQuickItem *parent = nullptr);
~QQuickStackView();
static QQuickStackAttached *qmlAttachedProperties(QObject *object);
@@ -145,9 +145,9 @@ Q_SIGNALS:
void replaceExitChanged();
protected:
- void componentComplete() Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- bool childMouseEventFilter(QQuickItem *, QEvent *) Q_DECL_OVERRIDE;
+ void componentComplete() override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ bool childMouseEventFilter(QQuickItem *, QEvent *) override;
private:
Q_DISABLE_COPY(QQuickStackView)
@@ -156,7 +156,7 @@ private:
class QQuickStackAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickStackAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickStackAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(int index READ index NOTIFY indexChanged FINAL)
@@ -164,7 +164,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickStackAttached : public QObject
Q_PROPERTY(QQuickStackView::Status status READ status NOTIFY statusChanged FINAL)
public:
- explicit QQuickStackAttached(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickStackAttached(QQuickItem *parent = nullptr);
~QQuickStackAttached();
int index() const;
diff --git a/src/templates/qquickstackview_p_p.h b/src/templates/qquickstackview_p_p.h
index d14c6326..1d065a5b 100644
--- a/src/templates/qquickstackview_p_p.h
+++ b/src/templates/qquickstackview_p_p.h
@@ -48,8 +48,8 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickstackview_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickstackview_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
#include <QtQuick/private/qquickitemviewtransition_p.h>
#include <QtQuick/private/qquickitemchangelistener_p.h>
#include <QtQml/private/qv4persistent_p.h>
@@ -82,7 +82,7 @@ public:
bool prepareTransition(QQuickItemViewTransitioner *transitioner, const QRectF &viewBounds);
void startTransition(QQuickItemViewTransitioner *transitioner);
- void itemDestroyed(QQuickItem *item) Q_DECL_OVERRIDE;
+ void itemDestroyed(QQuickItem *item) override;
int index;
bool init;
@@ -129,7 +129,7 @@ public:
void replaceTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate);
void completeTransition(QQuickStackElement *element, QQuickTransition *transition);
- void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item) Q_DECL_OVERRIDE;
+ void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item) override;
void setBusy(bool busy);
bool busy;
@@ -145,7 +145,7 @@ class QQuickStackAttachedPrivate : public QObjectPrivate, public QQuickItemChang
Q_DECLARE_PUBLIC(QQuickStackAttached)
public:
- QQuickStackAttachedPrivate() : element(Q_NULLPTR) { }
+ QQuickStackAttachedPrivate() : element(nullptr) { }
static QQuickStackAttachedPrivate *get(QQuickStackAttached *attached)
{
diff --git a/src/templates/qquickswipedelegate.cpp b/src/templates/qquickswipedelegate.cpp
new file mode 100644
index 00000000..064aebb7
--- /dev/null
+++ b/src/templates/qquickswipedelegate.cpp
@@ -0,0 +1,855 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Templates module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qquickswipedelegate_p.h"
+#include "qquickcontrol_p_p.h"
+#include "qquickabstractbutton_p_p.h"
+#include "qquickvelocitycalculator_p_p.h"
+
+#include <QtGui/qstylehints.h>
+#include <QtGui/private/qguiapplication_p.h>
+#include <QtGui/qpa/qplatformtheme.h>
+#include <QtQml/qqmlinfo.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \qmltype SwipeDelegate
+ \inherits AbstractButton
+ \instantiates QQuickSwipeDelegate
+ \inqmlmodule Qt.labs.controls
+ \brief A swipable item delegate.
+
+ SwipeDelegate presents a view item that can be swiped left or right to
+ expose more options or information. It is used as a delegate in views such
+ as \l ListView.
+
+ SwipeDelegate inherits its API from AbstractButton. For instance, you can set
+ \l {AbstractButton::text}{text}, make items \l {AbstractButton::checkable}{checkable},
+ and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API.
+
+ Information regarding the progress of a swipe, as well as the components
+ that should be shown upon swiping, are both available through the
+ \l {SwipeDelegate::}{exposure} grouped property object. For example,
+ \c exposure.position holds the position of the
+ swipe within the range \c -1.0 to \c 1.0. The \c exposure.left
+ property determines which item will be displayed when the control is swiped
+ to the right, and vice versa for \c exposure.right. The positioning of these
+ components is left to applications to decide. For example, without specifying
+ any position for \c exposure.left or \c exposure.right, the following will
+ occur:
+
+ \image qtquickcontrols-swipedelegate.gif
+
+ If \c exposure.left and \c exposure.right are anchored to the left and
+ right of the \l background item (respectively), they'll behave like this:
+
+ \image qtquickcontrols-swipedelegate-leading-trailing.gif
+
+ When using \c exposure.left and \c exposure.right, the control cannot be
+ swiped past the left and right edges. To achieve this type of "wrapping"
+ behavior, set \c exposure.behind instead. This will result in the same
+ item being shown regardless of which direction the control is swiped. For
+ example, in the image below, we set \c exposure.behind and then swipe the
+ control repeatedly in both directions:
+
+ \image qtquickcontrols-swipedelegate-behind.gif
+
+ \labs
+
+ \sa {Customizing SwipeDelegate}
+*/
+
+class QQuickSwipeExposurePrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickSwipeExposure)
+
+public:
+ QQuickSwipeExposurePrivate(QQuickSwipeDelegate *control) :
+ control(control),
+ positionBeforePress(0),
+ position(0),
+ wasActive(false),
+ active(false),
+ left(nullptr),
+ behind(nullptr),
+ right(nullptr),
+ leftItem(nullptr),
+ behindItem(nullptr),
+ rightItem(nullptr)
+ {
+ }
+
+ static QQuickSwipeExposurePrivate *get(QQuickSwipeExposure *exposure);
+
+ QQuickItem *createDelegateItem(QQmlComponent *component);
+ QQuickItem *showRelevantItemForPosition(qreal position);
+ QQuickItem *createRelevantItemForDistance(qreal distance);
+ void createLeftItem();
+ void createBehindItem();
+ void createRightItem();
+ void createAndShowLeftItem();
+ void createAndShowBehindItem();
+ void createAndShowRightItem();
+
+ void warnAboutMixingDelegates();
+ void warnAboutSettingDelegatesWhileVisible();
+
+ QQuickSwipeDelegate *control;
+ // Same range as position, but is set before press events so that we can
+ // keep track of which direction the user must swipe when using left and right delegates.
+ qreal positionBeforePress;
+ qreal position;
+ // A "less strict" version of active that is true if active was true
+ // before the last press event.
+ bool wasActive;
+ bool active;
+ QQuickVelocityCalculator velocityCalculator;
+ QQmlComponent *left;
+ QQmlComponent *behind;
+ QQmlComponent *right;
+ QQuickItem *leftItem;
+ QQuickItem *behindItem;
+ QQuickItem *rightItem;
+};
+
+QQuickSwipeExposurePrivate *QQuickSwipeExposurePrivate::get(QQuickSwipeExposure *exposure)
+{
+ return exposure->d_func();
+}
+
+QQuickItem *QQuickSwipeExposurePrivate::createDelegateItem(QQmlComponent *component)
+{
+ // If we don't use the correct context, it won't be possible to refer to
+ // the control's id from within the delegates.
+ QQmlContext *creationContext = component->creationContext();
+ // The component might not have been created in QML, in which case
+ // the creation context will be null and we have to create it ourselves.
+ if (!creationContext)
+ creationContext = qmlContext(control);
+ QQmlContext *context = new QQmlContext(creationContext);
+ context->setContextObject(control);
+ QQuickItem *item = qobject_cast<QQuickItem*>(component->beginCreate(context));
+ if (item) {
+ item->setParentItem(control);
+ component->completeCreate();
+ }
+ return item;
+}
+
+QQuickItem *QQuickSwipeExposurePrivate::showRelevantItemForPosition(qreal position)
+{
+ if (qFuzzyIsNull(position))
+ return nullptr;
+
+ if (behind) {
+ createAndShowBehindItem();
+ return behindItem;
+ }
+
+ if (right && position < 0.0) {
+ createAndShowRightItem();
+ return rightItem;
+ }
+
+ if (left && position > 0.0) {
+ createAndShowLeftItem();
+ return leftItem;
+ }
+
+ return nullptr;
+}
+
+QQuickItem *QQuickSwipeExposurePrivate::createRelevantItemForDistance(qreal distance)
+{
+ if (qFuzzyIsNull(distance))
+ return nullptr;
+
+ if (behind) {
+ createBehindItem();
+ return behindItem;
+ }
+
+ // a) If the position before the press was 0.0, we know that *any* movement
+ // whose distance is negative will result in the right item being shown and
+ // vice versa.
+ // b) Once the control has been exposed (that is, swiped to the left or right,
+ // and hence the position is either -1.0 or 1.0), we must use the width of the
+ // relevant item to determine if the distance is larger than that item,
+ // in order to know whether or not to display it.
+ // c) If the control has been exposed, and the swipe is larger than the width
+ // of the relevant item from which the swipe started from, we must show the
+ // item on the other side (if any).
+
+ if (right) {
+ if ((distance < 0.0 && positionBeforePress == 0.0) /* a) */
+ || (rightItem && positionBeforePress == -1.0 && distance < rightItem->width()) /* b) */
+ || (leftItem && positionBeforePress == 1.0 && qAbs(distance) > leftItem->width())) /* c) */ {
+ createRightItem();
+ return rightItem;
+ }
+ }
+
+ if (left) {
+ if ((distance > 0.0 && positionBeforePress == 0.0) /* a) */
+ || (leftItem && positionBeforePress == 1.0 && qAbs(distance) < leftItem->width()) /* b) */
+ || (rightItem && positionBeforePress == -1.0 && qAbs(distance) > rightItem->width())) /* c) */ {
+ createLeftItem();
+ return leftItem;
+ }
+ }
+
+ return nullptr;
+}
+
+void QQuickSwipeExposurePrivate::createLeftItem()
+{
+ if (!leftItem) {
+ Q_Q(QQuickSwipeExposure);
+ q->setLeftItem(createDelegateItem(left));
+ if (!leftItem)
+ qmlInfo(control) << "Failed to create left item:" << left->errors();
+ }
+}
+
+void QQuickSwipeExposurePrivate::createBehindItem()
+{
+ if (!behindItem) {
+ Q_Q(QQuickSwipeExposure);
+ q->setBehindItem(createDelegateItem(behind));
+ if (!behindItem)
+ qmlInfo(control) << "Failed to create behind item:" << behind->errors();
+ }
+}
+
+void QQuickSwipeExposurePrivate::createRightItem()
+{
+ if (!rightItem) {
+ Q_Q(QQuickSwipeExposure);
+ q->setRightItem(createDelegateItem(right));
+ if (!rightItem)
+ qmlInfo(control) << "Failed to create right item:" << right->errors();
+ }
+}
+
+void QQuickSwipeExposurePrivate::createAndShowLeftItem()
+{
+ createLeftItem();
+
+ if (leftItem)
+ leftItem->setVisible(true);
+
+ if (rightItem)
+ rightItem->setVisible(false);
+}
+
+void QQuickSwipeExposurePrivate::createAndShowBehindItem()
+{
+ createBehindItem();
+
+ if (behindItem)
+ behindItem->setVisible(true);
+}
+
+void QQuickSwipeExposurePrivate::createAndShowRightItem()
+{
+ createRightItem();
+
+ // This item may have already existed but was hidden.
+ if (rightItem)
+ rightItem->setVisible(true);
+
+ // The left item isn't visible when the right item is visible, so save rendering effort by hiding it.
+ if (leftItem)
+ leftItem->setVisible(false);
+}
+
+void QQuickSwipeExposurePrivate::warnAboutMixingDelegates()
+{
+ qmlInfo(control) << "cannot set both behind and left/right properties";
+}
+
+void QQuickSwipeExposurePrivate::warnAboutSettingDelegatesWhileVisible()
+{
+ qmlInfo(control) << "left/right/behind properties may only be set when exposure.position is 0";
+}
+
+QQuickSwipeExposure::QQuickSwipeExposure(QQuickSwipeDelegate *control) :
+ QObject(*(new QQuickSwipeExposurePrivate(control)))
+{
+}
+
+QQmlComponent *QQuickSwipeExposure::left() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->left;
+}
+
+void QQuickSwipeExposure::setLeft(QQmlComponent *left)
+{
+ Q_D(QQuickSwipeExposure);
+ if (left == d->left)
+ return;
+
+ if (d->behind) {
+ d->warnAboutMixingDelegates();
+ return;
+ }
+
+ if (!qFuzzyIsNull(d->position)) {
+ d->warnAboutSettingDelegatesWhileVisible();
+ return;
+ }
+
+ d->left = left;
+
+ if (!d->left) {
+ delete d->leftItem;
+ d->leftItem = nullptr;
+ }
+
+ emit leftChanged();
+}
+
+QQmlComponent *QQuickSwipeExposure::behind() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->behind;
+}
+
+void QQuickSwipeExposure::setBehind(QQmlComponent *behind)
+{
+ Q_D(QQuickSwipeExposure);
+ if (behind == d->behind)
+ return;
+
+ if (d->left || d->right) {
+ d->warnAboutMixingDelegates();
+ return;
+ }
+
+ if (!qFuzzyIsNull(d->position)) {
+ d->warnAboutSettingDelegatesWhileVisible();
+ return;
+ }
+
+ d->behind = behind;
+
+ if (!d->behind) {
+ delete d->behindItem;
+ d->behindItem = nullptr;
+ }
+
+ emit behindChanged();
+}
+
+QQmlComponent *QQuickSwipeExposure::right() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->right;
+}
+
+void QQuickSwipeExposure::setRight(QQmlComponent *right)
+{
+ Q_D(QQuickSwipeExposure);
+ if (right == d->right)
+ return;
+
+ if (d->behind) {
+ d->warnAboutMixingDelegates();
+ return;
+ }
+
+ if (!qFuzzyIsNull(d->position)) {
+ d->warnAboutSettingDelegatesWhileVisible();
+ return;
+ }
+
+ d->right = right;
+
+ if (!d->right) {
+ delete d->rightItem;
+ d->rightItem = nullptr;
+ }
+
+ emit rightChanged();
+}
+
+QQuickItem *QQuickSwipeExposure::leftItem() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->leftItem;
+}
+
+void QQuickSwipeExposure::setLeftItem(QQuickItem *item)
+{
+ Q_D(QQuickSwipeExposure);
+ if (item == d->leftItem)
+ return;
+
+ delete d->leftItem;
+ d->leftItem = item;
+
+ if (d->leftItem) {
+ d->leftItem->setParentItem(d->control);
+
+ if (qFuzzyIsNull(d->leftItem->z()))
+ d->leftItem->setZ(-2);
+ }
+
+ emit leftItemChanged();
+}
+
+QQuickItem *QQuickSwipeExposure::behindItem() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->behindItem;
+}
+
+void QQuickSwipeExposure::setBehindItem(QQuickItem *item)
+{
+ Q_D(QQuickSwipeExposure);
+ if (item == d->behindItem)
+ return;
+
+ delete d->behindItem;
+ d->behindItem = item;
+
+ if (d->behindItem) {
+ d->behindItem->setParentItem(d->control);
+
+ if (qFuzzyIsNull(d->behindItem->z()))
+ d->behindItem->setZ(-2);
+ }
+
+ emit behindItemChanged();
+}
+
+QQuickItem *QQuickSwipeExposure::rightItem() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->rightItem;
+}
+
+void QQuickSwipeExposure::setRightItem(QQuickItem *item)
+{
+ Q_D(QQuickSwipeExposure);
+ if (item == d->rightItem)
+ return;
+
+ delete d->rightItem;
+ d->rightItem = item;
+
+ if (d->rightItem) {
+ d->rightItem->setParentItem(d->control);
+
+ if (qFuzzyIsNull(d->rightItem->z()))
+ d->rightItem->setZ(-2);
+ }
+
+ emit rightItemChanged();
+}
+
+qreal QQuickSwipeExposure::position() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->position;
+}
+
+void QQuickSwipeExposure::setPosition(qreal position)
+{
+ Q_D(QQuickSwipeExposure);
+ const qreal adjustedPosition = qBound<qreal>(-1.0, position, 1.0);
+ if (adjustedPosition == d->position)
+ return;
+
+ d->position = adjustedPosition;
+
+ QQuickItem *relevantItem = d->showRelevantItemForPosition(d->position);
+ const qreal relevantWidth = relevantItem ? relevantItem->width() : 0.0;
+ d->control->contentItem()->setProperty("x", d->position * relevantWidth + d->control->leftPadding());
+ if (QQuickItem *background = d->control->background())
+ background->setProperty("x", d->position * relevantWidth);
+
+ emit positionChanged();
+}
+
+bool QQuickSwipeExposure::isActive() const
+{
+ Q_D(const QQuickSwipeExposure);
+ return d->active;
+}
+
+void QQuickSwipeExposure::setActive(bool active)
+{
+ Q_D(QQuickSwipeExposure);
+ if (active == d->active)
+ return;
+
+ d->active = active;
+ emit activeChanged();
+}
+
+class QQuickSwipeDelegatePrivate : public QQuickAbstractButtonPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickSwipeDelegate)
+
+public:
+ QQuickSwipeDelegatePrivate(QQuickSwipeDelegate *control) :
+ exposure(control)
+ {
+ }
+
+ bool handleMousePressEvent(QQuickItem *item, QMouseEvent *event);
+ bool handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event);
+ bool handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event);
+
+ void resizeContent() override;
+
+ QQuickSwipeExposure exposure;
+};
+
+bool QQuickSwipeDelegatePrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *event)
+{
+ Q_Q(QQuickSwipeDelegate);
+ QQuickSwipeExposurePrivate *exposurePrivate = QQuickSwipeExposurePrivate::get(&exposure);
+ // If the position is 0, we want to handle events ourself - we don't want child items to steal them.
+ // This code will only get called when a child item has been created;
+ // events will go through the regular channels (mousePressEvent()) until then.
+ if (qFuzzyIsNull(exposurePrivate->position)) {
+ q->mousePressEvent(event);
+ return true;
+ }
+
+ exposurePrivate->positionBeforePress = exposurePrivate->position;
+ exposurePrivate->velocityCalculator.startMeasuring(event->pos(), event->timestamp());
+ pressPoint = item->mapToItem(q, event->pos());
+ return false;
+}
+
+bool QQuickSwipeDelegatePrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event)
+{
+ Q_Q(QQuickSwipeDelegate);
+
+ if (autoRepeat) {
+ stopPressRepeat();
+ } else if (holdTimer > 0) {
+ if (QLineF(pressPoint, event->localPos()).length() > QGuiApplication::styleHints()->startDragDistance())
+ stopPressAndHold();
+ }
+
+ // Protect against division by zero.
+ if (width == 0)
+ return false;
+
+ // Don't bother reacting to events if we don't have any delegates.
+ QQuickSwipeExposurePrivate *exposurePrivate = QQuickSwipeExposurePrivate::get(&exposure);
+ if (!exposurePrivate->left && !exposurePrivate->right && !exposurePrivate->behind)
+ return false;
+
+ // Don't handle move events for the control if it wasn't pressed.
+ if (item == q && !pressed)
+ return false;
+
+ const qreal distance = (event->pos() - pressPoint).x();
+ if (!q->keepMouseGrab()) {
+ // Taken from QQuickDrawer::handleMouseMoveEvent; see comments there.
+ int threshold = qMax(20, QGuiApplication::styleHints()->startDragDistance() + 5);
+ const bool overThreshold = QQuickWindowPrivate::dragOverThreshold(distance, Qt::XAxis, event, threshold);
+ if (window && overThreshold) {
+ QQuickItem *grabber = q->window()->mouseGrabberItem();
+ if (!grabber || !grabber->keepMouseGrab()) {
+ q->grabMouse();
+ q->setKeepMouseGrab(overThreshold);
+ q->setPressed(true);
+ exposure.setActive(false);
+ }
+ }
+ }
+
+ if (q->keepMouseGrab()) {
+ // Ensure we don't try to calculate a position when the user tried to drag
+ // to the left when the left item is already exposed, and vice versa.
+ // The code below assumes that the drag is valid, so if we don't have this check,
+ // the wrong items are visible and the swiping wraps.
+ if (exposurePrivate->behind
+ || ((exposurePrivate->left || exposurePrivate->right)
+ && (qFuzzyIsNull(exposurePrivate->positionBeforePress)
+ || (exposurePrivate->positionBeforePress == -1.0 && distance >= 0.0)
+ || (exposurePrivate->positionBeforePress == 1.0 && distance <= 0.0)))) {
+
+ // We must instantiate the items here so that we can calculate the
+ // position against the width of the relevant item.
+ QQuickItem *relevantItem = exposurePrivate->createRelevantItemForDistance(distance);
+ // If there isn't any relevant item, the user may have swiped back to the 0 position,
+ // or they swiped back to a position that is equal to positionBeforePress.
+ const qreal normalizedDistance = relevantItem ? distance / relevantItem->width() : 0.0;
+ qreal position = 0;
+
+ // If the control was exposed before the drag begun, the distance should be inverted.
+ // For example, if the control had been swiped to the right, the position would be 1.0.
+ // If the control was then swiped the left by a distance of -20 pixels, the normalized
+ // distance might be -0.2, for example, which cannot be used as the position; the swipe
+ // started from the right, so we account for that by adding the position.
+ if (qFuzzyIsNull(normalizedDistance)) {
+ // There are two cases when the normalizedDistance can be 0,
+ // and we must distinguish between them:
+ //
+ // a) The swipe returns to the position that it was at before the press event.
+ // In this case, the distance will be 0.
+ // There would have been many position changes in the meantime, so we can't just
+ // ignore the move event; we have to set position to what it was before the press.
+ //
+ // b) If the position was at, 1.0, for example, and the control was then swiped
+ // to the left by the exact width of the left item, there won't be any relevant item
+ // (because the swipe's position would be at 0.0). In turn, the normalizedDistance
+ // would be 0 (because of the lack of a relevant item), but the distance will be non-zero.
+ position = qFuzzyIsNull(distance) ? exposurePrivate->positionBeforePress : 0;
+ } else if (!exposurePrivate->wasActive) {
+ position = normalizedDistance;
+ } else {
+ position = distance > 0 ? normalizedDistance - 1.0 : normalizedDistance + 1.0;
+ }
+
+ exposure.setPosition(position);
+ }
+ }
+
+ event->accept();
+
+ return q->keepMouseGrab();
+}
+
+static const qreal exposeVelocityThreshold = 300.0;
+
+bool QQuickSwipeDelegatePrivate::handleMouseReleaseEvent(QQuickItem *, QMouseEvent *event)
+{
+ Q_Q(QQuickSwipeDelegate);
+ QQuickSwipeExposurePrivate *exposurePrivate = QQuickSwipeExposurePrivate::get(&exposure);
+ exposurePrivate->velocityCalculator.stopMeasuring(event->pos(), event->timestamp());
+
+ // The control can be exposed by either swiping past the halfway mark, or swiping fast enough.
+ const qreal swipeVelocity = exposurePrivate->velocityCalculator.velocity().x();
+ if (exposurePrivate->position > 0.5 ||
+ (exposurePrivate->position > 0.0 && swipeVelocity > exposeVelocityThreshold)) {
+ exposure.setPosition(1.0);
+ exposure.setActive(true);
+ exposurePrivate->wasActive = true;
+ } else if (exposurePrivate->position < -0.5 ||
+ (exposurePrivate->position < 0.0 && swipeVelocity < -exposeVelocityThreshold)) {
+ exposure.setPosition(-1.0);
+ exposure.setActive(true);
+ exposurePrivate->wasActive = true;
+ } else {
+ exposure.setPosition(0.0);
+ exposure.setActive(false);
+ exposurePrivate->wasActive = false;
+ }
+
+ q->setKeepMouseGrab(false);
+
+ return true;
+}
+
+void QQuickSwipeDelegatePrivate::resizeContent()
+{
+ // If the background and contentItem are outside the visible bounds
+ // of the control (we clip anything outside the bounds), we don't want
+ // to call QQuickControlPrivate's implementation of this function,
+ // as it repositions the contentItem to be visible.
+ QQuickSwipeExposurePrivate *exposurePrivate = QQuickSwipeExposurePrivate::get(&exposure);
+ if (!exposurePrivate->active) {
+ QQuickAbstractButtonPrivate::resizeContent();
+ }
+}
+
+QQuickSwipeDelegate::QQuickSwipeDelegate(QQuickItem *parent) :
+ QQuickAbstractButton(*(new QQuickSwipeDelegatePrivate(this)), parent)
+{
+ setFiltersChildMouseEvents(true);
+}
+
+/*!
+ \qmlpropertygroup Qt.labs.controls::SwipeDelegate::exposure
+ \qmlproperty real Qt.labs.controls::SwipeDelegate::exposure.position
+ \qmlproperty bool Qt.labs.controls::SwipeDelegate::exposure.active
+ \qmlproperty Component Qt.labs.controls::SwipeDelegate::exposure.left
+ \qmlproperty Component Qt.labs.controls::SwipeDelegate::exposure.behind
+ \qmlproperty Component Qt.labs.controls::SwipeDelegate::exposure.right
+ \qmlproperty Item Qt.labs.controls::SwipeDelegate::exposure.leftItem
+ \qmlproperty Item Qt.labs.controls::SwipeDelegate::exposure.behindItem
+ \qmlproperty Item Qt.labs.controls::SwipeDelegate::exposure.rightItem
+
+ \table
+ \header
+ \li Property
+ \li Description
+ \row
+ \li position
+ \li This property holds the position of the swipe relative to either
+ side of the control. When this value reaches either
+ \c -1.0 (left side) or \c 1.0 (right side) and the mouse button is
+ released, \c active will be \c true.
+ \row
+ \li active
+ \li This property holds whether the control is fully exposed. It is
+ equivalent to \c {!pressed && (position == -1.0 || position == 1.0)}.
+
+ When active is \c true, any interactive items declared in \l left
+ or \l right will receive mouse events.
+ \row
+ \li left
+ \li This property holds the left delegate.
+
+ The left delegate sits behind both \l {Control::}{contentItem} and
+ \l background. When the SwipeDelegate is swiped to the right, this item
+ will be gradually revealed.
+ \row
+ \li behind
+ \li This property holds the delegate that is shown when the
+ SwipeDelegate is swiped to both the left and right.
+
+ As with the \c left and \c right delegates, it sits behind both
+ \l {Control::}{contentItem} and \l background. However, a SwipeDelegate
+ whose \c behind has been set can be continuously swiped from either
+ side, and will always show the same item.
+ \row
+ \li right
+ \li This property holds the right delegate.
+
+ The right delegate sits behind both \l {Control::}{contentItem} and
+ \l background. When the SwipeDelegate is swiped to the left, this item
+ will be gradually revealed.
+ \row
+ \li leftItem
+ \li This property holds the item instantiated from the \c left component.
+
+ If \c left has not been set, or the position hasn't changed since
+ creation of the SwipeDelegate, this property will be \c null.
+ \row
+ \li behindItem
+ \li This property holds the item instantiated from the \c behind component.
+
+ If \c behind has not been set, or the position hasn't changed since
+ creation of the SwipeDelegate, this property will be \c null.
+ \row
+ \li rightItem
+ \li This property holds the item instantiated from the \c right component.
+
+ If \c right has not been set, or the position hasn't changed since
+ creation of the SwipeDelegate, this property will be \c null.
+ \endtable
+
+ \sa {Control::}{contentItem}, {Control::}{background}
+*/
+QQuickSwipeExposure *QQuickSwipeDelegate::exposure() const
+{
+ Q_D(const QQuickSwipeDelegate);
+ return const_cast<QQuickSwipeExposure*>(&d->exposure);
+}
+
+static bool isChildOrGrandchildOf(QQuickItem *child, QQuickItem *item)
+{
+ return item && (child == item || item->isAncestorOf(child));
+}
+
+bool QQuickSwipeDelegate::childMouseEventFilter(QQuickItem *child, QEvent *event)
+{
+ Q_D(QQuickSwipeDelegate);
+ // The contentItem is, by default, usually a non-interactive item like Text, and
+ // the same applies to the background. This means that simply stacking the left/right/behind
+ // items before these items won't allow us to get mouse events when the control is not currently exposed
+ // but has been previously. Therefore, we instead call setFiltersChildMouseEvents(true) in the constructor
+ // and filter out child events only when the child is the left/right/behind item.
+ const QQuickSwipeExposurePrivate *exposurePrivate = QQuickSwipeExposurePrivate::get(&d->exposure);
+ if (!isChildOrGrandchildOf(child, exposurePrivate->leftItem) && !isChildOrGrandchildOf(child, exposurePrivate->behindItem)
+ && !isChildOrGrandchildOf(child, exposurePrivate->rightItem)) {
+ return false;
+ }
+
+ switch (event->type()) {
+ case QEvent::MouseButtonPress: {
+ return d->handleMousePressEvent(child, static_cast<QMouseEvent *>(event));
+ } case QEvent::MouseMove: {
+ return d->handleMouseMoveEvent(child, static_cast<QMouseEvent *>(event));
+ } case QEvent::MouseButtonRelease: {
+ // Make sure that the control gets release events if it has created child
+ // items that are stealing events from it.
+ QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
+ QQuickAbstractButton::mouseReleaseEvent(mouseEvent);
+ return d->handleMouseReleaseEvent(child, mouseEvent);
+ } default:
+ return false;
+ }
+}
+
+// We only override this to set positionBeforePress;
+// otherwise, it's the same as the base class implementation.
+void QQuickSwipeDelegate::mousePressEvent(QMouseEvent *event)
+{
+ Q_D(QQuickSwipeDelegate);
+ QQuickAbstractButton::mousePressEvent(event);
+ QQuickSwipeExposurePrivate *exposurePrivate = QQuickSwipeExposurePrivate::get(&d->exposure);
+ exposurePrivate->positionBeforePress = exposurePrivate->position;
+ exposurePrivate->velocityCalculator.startMeasuring(event->pos(), event->timestamp());
+}
+
+void QQuickSwipeDelegate::mouseMoveEvent(QMouseEvent *event)
+{
+ Q_D(QQuickSwipeDelegate);
+ d->handleMouseMoveEvent(this, event);
+}
+
+void QQuickSwipeDelegate::mouseReleaseEvent(QMouseEvent *event)
+{
+ Q_D(QQuickSwipeDelegate);
+ QQuickAbstractButton::mouseReleaseEvent(event);
+ d->handleMouseReleaseEvent(this, event);
+}
+
+QFont QQuickSwipeDelegate::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::ItemViewFont);
+}
+
+#ifndef QT_NO_ACCESSIBILITY
+QAccessible::Role QQuickSwipeDelegate::accessibleRole() const
+{
+ return QAccessible::ListItem;
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/templates/qquickswipedelegate_p.h b/src/templates/qquickswipedelegate_p.h
new file mode 100644
index 00000000..4e1688ec
--- /dev/null
+++ b/src/templates/qquickswipedelegate_p.h
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Templates module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKSWIPEDELEGATE_P_H
+#define QQUICKSWIPEDELEGATE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickSwipeDelegatePrivate;
+class QQuickSwipeExposure;
+
+class Q_QUICKTEMPLATES_EXPORT QQuickSwipeDelegate : public QQuickAbstractButton
+{
+ Q_OBJECT
+ Q_PROPERTY(QQuickSwipeExposure *exposure READ exposure CONSTANT)
+
+public:
+ explicit QQuickSwipeDelegate(QQuickItem *parent = nullptr);
+
+ QQuickSwipeExposure *exposure() const;
+
+protected:
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+
+ QFont defaultFont() const override;
+
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessible::Role accessibleRole() const override;
+#endif
+
+private:
+ Q_DISABLE_COPY(QQuickSwipeDelegate)
+ Q_DECLARE_PRIVATE(QQuickSwipeDelegate)
+};
+
+class QQuickSwipeExposurePrivate;
+
+class Q_QUICKTEMPLATES_EXPORT QQuickSwipeExposure : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL)
+ Q_PROPERTY(bool active READ isActive NOTIFY activeChanged FINAL)
+ Q_PROPERTY(QQmlComponent *left READ left WRITE setLeft NOTIFY leftChanged FINAL)
+ Q_PROPERTY(QQmlComponent *behind READ behind WRITE setBehind NOTIFY behindChanged FINAL)
+ Q_PROPERTY(QQmlComponent *right READ right WRITE setRight NOTIFY rightChanged FINAL)
+ Q_PROPERTY(QQuickItem *leftItem READ leftItem NOTIFY leftItemChanged FINAL)
+ Q_PROPERTY(QQuickItem *behindItem READ behindItem NOTIFY behindItemChanged FINAL)
+ Q_PROPERTY(QQuickItem *rightItem READ rightItem NOTIFY rightItemChanged FINAL)
+
+public:
+ explicit QQuickSwipeExposure(QQuickSwipeDelegate *control);
+
+ qreal position() const;
+ void setPosition(qreal position);
+
+ bool isActive() const;
+ void setActive(bool active);
+
+ QQmlComponent *left() const;
+ void setLeft(QQmlComponent *left);
+
+ QQmlComponent *behind() const;
+ void setBehind(QQmlComponent *behind);
+
+ QQmlComponent *right() const;
+ void setRight(QQmlComponent *right);
+
+ QQuickItem *leftItem() const;
+ void setLeftItem(QQuickItem *item);
+
+ QQuickItem *behindItem() const;
+ void setBehindItem(QQuickItem *item);
+
+ QQuickItem *rightItem() const;
+ void setRightItem(QQuickItem *item);
+
+Q_SIGNALS:
+ void positionChanged();
+ void activeChanged();
+ void leftChanged();
+ void behindChanged();
+ void rightChanged();
+ void leftItemChanged();
+ void behindItemChanged();
+ void rightItemChanged();
+
+private:
+ Q_DISABLE_COPY(QQuickSwipeExposure)
+ Q_DECLARE_PRIVATE(QQuickSwipeExposure)
+};
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QQuickSwipeDelegate)
+
+#endif // QQUICKSWIPEDELEGATE_P_H
diff --git a/src/templates/qquickswipeview.cpp b/src/templates/qquickswipeview.cpp
index f807439b..1aed7ffa 100644
--- a/src/templates/qquickswipeview.cpp
+++ b/src/templates/qquickswipeview.cpp
@@ -37,7 +37,7 @@
#include "qquickswipeview_p.h"
#include <QtQml/qqmlinfo.h>
-#include <QtLabsTemplates/private/qquickcontainer_p_p.h>
+#include <QtQuickTemplates/private/qquickcontainer_p_p.h>
QT_BEGIN_NAMESPACE
@@ -48,11 +48,11 @@ QT_BEGIN_NAMESPACE
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-navigation
\ingroup qtlabscontrols-containers
- \brief A swipe view control.
+ \brief Enables the user to navigate pages by swiping sideways.
SwipeView provides a swipe-based navigation model.
- \image qtlabscontrols-swipeview-wireframe.png
+ \image qtquickcontrols-swipeview-wireframe.png
SwipeView is populated with a set of pages. One page is visible at a time.
The user can navigate between the pages by swiping sideways. Notice that
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
with PageIndicator, to give the user a visual clue that there are multiple
pages.
- \snippet qtlabscontrols-swipeview-indicator.qml 1
+ \snippet qtquickcontrols-swipeview-indicator.qml 1
As shown above, SwipeView is typically populated with a static set of
pages that are defined inline as children of the view. It is also possible
@@ -126,7 +126,7 @@ QQuickSwipeViewAttached *QQuickSwipeView::qmlAttachedProperties(QObject *object)
QQuickItem *item = qobject_cast<QQuickItem *>(object);
if (!item) {
qWarning() << "SwipeView: attached properties must be accessed from within a child item";
- return Q_NULLPTR;
+ return nullptr;
}
return new QQuickSwipeViewAttached(item);
@@ -180,7 +180,7 @@ class QQuickSwipeViewAttachedPrivate : public QObjectPrivate, public QQuickItemC
public:
QQuickSwipeViewAttachedPrivate(QQuickItem *item) :
item(item),
- swipeView(Q_NULLPTR),
+ swipeView(nullptr),
index(-1),
isCurrent(false)
{
@@ -191,9 +191,9 @@ public:
void updateView(QQuickItem *parent);
- void itemChildAdded(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
- void itemChildRemoved(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
- void itemParentChanged(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
+ void itemChildAdded(QQuickItem *, QQuickItem *) override;
+ void itemChildRemoved(QQuickItem *, QQuickItem *) override;
+ void itemParentChanged(QQuickItem *, QQuickItem *) override;
void updateIndex();
void updateIsCurrent();
@@ -213,7 +213,7 @@ public:
void QQuickSwipeViewAttachedPrivate::updateIndex()
{
- setIndex(swipeView ? QQuickSwipeViewPrivate::get(swipeView)->contentModel->indexOf(item, Q_NULLPTR) : -1);
+ setIndex(swipeView ? QQuickSwipeViewPrivate::get(swipeView)->contentModel->indexOf(item, nullptr) : -1);
}
void QQuickSwipeViewAttachedPrivate::updateIsCurrent()
@@ -257,20 +257,22 @@ void QQuickSwipeViewAttachedPrivate::setView(QQuickSwipeView *view)
void QQuickSwipeViewAttachedPrivate::setIsCurrent(bool current)
{
- if (current != isCurrent) {
- isCurrent = current;
- Q_Q(QQuickSwipeViewAttached);
- emit q->isCurrentItemChanged();
- }
+ if (current == isCurrent)
+ return;
+
+ isCurrent = current;
+ Q_Q(QQuickSwipeViewAttached);
+ emit q->isCurrentItemChanged();
}
void QQuickSwipeViewAttachedPrivate::setIndex(int i)
{
- if (i != index) {
- index = i;
- Q_Q(QQuickSwipeViewAttached);
- emit q->indexChanged();
- }
+ if (i == index)
+ return;
+
+ index = i;
+ Q_Q(QQuickSwipeViewAttached);
+ emit q->indexChanged();
}
void QQuickSwipeViewAttachedPrivate::updateView(QQuickItem *parent)
@@ -280,7 +282,7 @@ void QQuickSwipeViewAttachedPrivate::updateView(QQuickItem *parent)
// - A non-visual or weird type like TestCase, when child items are created from components
// wherein the attached properties are used
// - null, when the item was removed with removeItem()
- QQuickSwipeView *view = Q_NULLPTR;
+ QQuickSwipeView *view = nullptr;
if (parent) {
view = qobject_cast<QQuickSwipeView*>(parent);
if (!view) {
diff --git a/src/templates/qquickswipeview_p.h b/src/templates/qquickswipeview_p.h
index bf733c7b..e6dd69dd 100644
--- a/src/templates/qquickswipeview_p.h
+++ b/src/templates/qquickswipeview_p.h
@@ -48,25 +48,25 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontainer_p.h>
+#include <QtQuickTemplates/private/qquickcontainer_p.h>
QT_BEGIN_NAMESPACE
class QQuickSwipeViewAttached;
class QQuickSwipeViewPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickSwipeView : public QQuickContainer
+class Q_QUICKTEMPLATES_EXPORT QQuickSwipeView : public QQuickContainer
{
Q_OBJECT
public:
- explicit QQuickSwipeView(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickSwipeView(QQuickItem *parent = nullptr);
static QQuickSwipeViewAttached *qmlAttachedProperties(QObject *object);
protected:
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void itemAdded(int index, QQuickItem *item) Q_DECL_OVERRIDE;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void itemAdded(int index, QQuickItem *item) override;
private:
Q_DISABLE_COPY(QQuickSwipeView)
@@ -75,7 +75,7 @@ private:
class QQuickSwipeViewAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickSwipeViewAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickSwipeViewAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(int index READ index NOTIFY indexChanged FINAL)
diff --git a/src/templates/qquickswitch.cpp b/src/templates/qquickswitch.cpp
index 05422d8d..1b81606f 100644
--- a/src/templates/qquickswitch.cpp
+++ b/src/templates/qquickswitch.cpp
@@ -48,21 +48,21 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickSwitch
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-buttons
- \brief A switch control.
+ \brief An option button that can be toggled on or off.
- \image qtlabscontrols-switch.gif
+ \image qtquickcontrols-switch.gif
Switch is an option button that can be dragged or toggled on (checked) or
off (unchecked). Switches are typically used to select between two states.
\table
- \row \li \image qtlabscontrols-switch-normal.png
+ \row \li \image qtquickcontrols-switch-normal.png
\li A switch in its normal state.
- \row \li \image qtlabscontrols-switch-checked.png
+ \row \li \image qtquickcontrols-switch-checked.png
\li A switch that is checked.
- \row \li \image qtlabscontrols-switch-focused.png
+ \row \li \image qtquickcontrols-switch-focused.png
\li A switch that has active focus.
- \row \li \image qtlabscontrols-switch-disabled.png
+ \row \li \image qtquickcontrols-switch-disabled.png
\li A switch that is disabled.
\endtable
@@ -90,6 +90,7 @@ public:
QQuickSwitchPrivate() : position(0) { }
void updatePosition();
+ qreal positionAt(const QPoint &point) const;
bool handleMousePressEvent(QQuickItem *child, QMouseEvent *event);
bool handleMouseMoveEvent(QQuickItem *child, QMouseEvent *event);
@@ -106,6 +107,15 @@ void QQuickSwitchPrivate::updatePosition()
q->setPosition(checked ? 1.0 : 0.0);
}
+qreal QQuickSwitchPrivate::positionAt(const QPoint &point) const
+{
+ Q_Q(const QQuickSwitch);
+ qreal pos = point.x() / indicator->width();
+ if (q->isMirrored())
+ return 1.0 - pos;
+ return pos;
+}
+
bool QQuickSwitchPrivate::handleMousePressEvent(QQuickItem *child, QMouseEvent *event)
{
Q_Q(QQuickSwitch);
@@ -122,7 +132,7 @@ bool QQuickSwitchPrivate::handleMouseMoveEvent(QQuickItem *child, QMouseEvent *e
if (!child->keepMouseGrab())
child->setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(event->pos().x() - pressPoint.x(), Qt::XAxis, event));
if (child->keepMouseGrab()) {
- q->setPosition(q->positionAt(event->pos()));
+ q->setPosition(positionAt(event->pos()));
event->accept();
}
return true;
@@ -188,11 +198,12 @@ void QQuickSwitch::setPosition(qreal position)
{
Q_D(QQuickSwitch);
position = qBound<qreal>(0.0, position, 1.0);
- if (d->position != position) {
- d->position = position;
- emit positionChanged();
- emit visualPositionChanged();
- }
+ if (qFuzzyCompare(d->position, position))
+ return;
+
+ d->position = position;
+ emit positionChanged();
+ emit visualPositionChanged();
}
/*!
@@ -244,12 +255,4 @@ bool QQuickSwitch::childMouseEventFilter(QQuickItem *child, QEvent *event)
return false;
}
-qreal QQuickSwitch::positionAt(const QPoint &point) const
-{
- qreal pos = point.x() / indicator()->width();
- if (isMirrored())
- return 1.0 - pos;
- return pos;
-}
-
QT_END_NAMESPACE
diff --git a/src/templates/qquickswitch_p.h b/src/templates/qquickswitch_p.h
index 94d0d601..923ecc1c 100644
--- a/src/templates/qquickswitch_p.h
+++ b/src/templates/qquickswitch_p.h
@@ -48,20 +48,20 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
class QQuickSwitchPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickSwitch : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickSwitch : public QQuickAbstractButton
{
Q_OBJECT
Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL)
Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL)
public:
- explicit QQuickSwitch(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickSwitch(QQuickItem *parent = nullptr);
qreal position() const;
void setPosition(qreal position);
@@ -73,10 +73,8 @@ Q_SIGNALS:
void visualPositionChanged();
protected:
- void mirrorChange() Q_DECL_OVERRIDE;
- bool childMouseEventFilter(QQuickItem *child, QEvent *event) Q_DECL_OVERRIDE;
-
- virtual qreal positionAt(const QPoint &point) const;
+ void mirrorChange() override;
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
private:
Q_DISABLE_COPY(QQuickSwitch)
diff --git a/src/templates/qquicktabbar.cpp b/src/templates/qquicktabbar.cpp
index 58d68058..54ac20e8 100644
--- a/src/templates/qquicktabbar.cpp
+++ b/src/templates/qquicktabbar.cpp
@@ -47,17 +47,17 @@ QT_BEGIN_NAMESPACE
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-navigation
\ingroup qtlabscontrols-containers
- \brief A tab bar control.
+ \brief A bar with icons allowing to switch between different views or subtasks.
TabBar provides a tab-based navigation model.
- \image qtlabscontrols-tabbar-wireframe.png
+ \image qtquickcontrols-tabbar-wireframe.png
TabBar is populated with TabButton controls, and can be used together with
any layout or container control that provides \c currentIndex -property,
such as \l StackLayout or \l SwipeView
- \snippet qtlabscontrols-tabbar.qml 1
+ \snippet qtquickcontrols-tabbar.qml 1
\labs
@@ -69,11 +69,19 @@ class QQuickTabBarPrivate : public QQuickContainerPrivate
Q_DECLARE_PUBLIC(QQuickTabBar)
public:
+ QQuickTabBarPrivate();
+
void updateCurrentItem();
void updateCurrentIndex();
void updateLayout();
+
+ QQuickTabBar::Position position;
};
+QQuickTabBarPrivate::QQuickTabBarPrivate() : position(QQuickTabBar::Header)
+{
+}
+
void QQuickTabBarPrivate::updateCurrentItem()
{
QQuickTabButton *button = qobject_cast<QQuickTabButton *>(contentModel->get(currentIndex));
@@ -86,7 +94,7 @@ void QQuickTabBarPrivate::updateCurrentIndex()
Q_Q(QQuickTabBar);
QQuickTabButton *button = qobject_cast<QQuickTabButton *>(q->sender());
if (button && button->isChecked())
- q->setCurrentIndex(contentModel->indexOf(button, Q_NULLPTR));
+ q->setCurrentIndex(contentModel->indexOf(button, nullptr));
}
void QQuickTabBarPrivate::updateLayout()
@@ -117,6 +125,38 @@ QQuickTabBar::QQuickTabBar(QQuickItem *parent) :
QObjectPrivate::connect(this, &QQuickTabBar::currentIndexChanged, d, &QQuickTabBarPrivate::updateCurrentItem);
}
+/*!
+ \qmlproperty enumeration Qt.labs.controls::TabBar::position
+
+ This property holds the position of the tab bar.
+
+ \note If the tab bar is assigned as a header or footer of ApplicationWindow
+ or Page, the appropriate position is set automatically.
+
+ Possible values:
+ \value TabBar.Header The tab bar is at the top, as a window or page header.
+ \value TabBar.Footer The tab bar is at the bottom, as a window or page footer.
+
+ The default value is style-specific.
+
+ \sa ApplicationWindow::header, ApplicationWindow::footer, Page::header, Page::footer
+*/
+QQuickTabBar::Position QQuickTabBar::position() const
+{
+ Q_D(const QQuickTabBar);
+ return d->position;
+}
+
+void QQuickTabBar::setPosition(Position position)
+{
+ Q_D(QQuickTabBar);
+ if (d->position == position)
+ return;
+
+ d->position = position;
+ emit positionChanged();
+}
+
void QQuickTabBar::updatePolish()
{
Q_D(QQuickTabBar);
diff --git a/src/templates/qquicktabbar_p.h b/src/templates/qquicktabbar_p.h
index 7d6f674c..76c2e59f 100644
--- a/src/templates/qquicktabbar_p.h
+++ b/src/templates/qquicktabbar_p.h
@@ -48,29 +48,42 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickcontainer_p.h>
+#include <QtQuickTemplates/private/qquickcontainer_p.h>
QT_BEGIN_NAMESPACE
class QQuickTabBarPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickTabBar : public QQuickContainer
+class Q_QUICKTEMPLATES_EXPORT QQuickTabBar : public QQuickContainer
{
Q_OBJECT
+ Q_PROPERTY(Position position READ position WRITE setPosition NOTIFY positionChanged FINAL)
public:
- explicit QQuickTabBar(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickTabBar(QQuickItem *parent = nullptr);
+
+ enum Position {
+ Header,
+ Footer
+ };
+ Q_ENUM(Position)
+
+ Position position() const;
+ void setPosition(Position position);
+
+Q_SIGNALS:
+ void positionChanged();
protected:
- void updatePolish() Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- bool isContent(QQuickItem *item) const Q_DECL_OVERRIDE;
- void itemAdded(int index, QQuickItem *item) Q_DECL_OVERRIDE;
- void itemRemoved(int index, QQuickItem *item) Q_DECL_OVERRIDE;
+ void updatePolish() override;
+ void componentComplete() override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ bool isContent(QQuickItem *item) const override;
+ void itemAdded(int index, QQuickItem *item) override;
+ void itemRemoved(int index, QQuickItem *item) override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
private:
diff --git a/src/templates/qquicktabbutton.cpp b/src/templates/qquicktabbutton.cpp
index a70dcbe1..5ded5539 100644
--- a/src/templates/qquicktabbutton.cpp
+++ b/src/templates/qquicktabbutton.cpp
@@ -47,13 +47,13 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickTabButton
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-navigation
- \brief A tab button control.
+ \brief A tab button control that can be found on a TabBar.
- \image qtlabscontrols-tabbutton.png
+ \image qtquickcontrols-tabbutton.png
TabButton is used in conjunction with a \l TabBar.
- \snippet qtlabscontrols-tabbutton.qml 1
+ \snippet qtquickcontrols-tabbutton.qml 1
\labs
diff --git a/src/templates/qquicktabbutton_p.h b/src/templates/qquicktabbutton_p.h
index c02a206f..549615ea 100644
--- a/src/templates/qquicktabbutton_p.h
+++ b/src/templates/qquicktabbutton_p.h
@@ -48,22 +48,22 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickabstractbutton_p.h>
+#include <QtQuickTemplates/private/qquickabstractbutton_p.h>
QT_BEGIN_NAMESPACE
-class Q_LABSTEMPLATES_EXPORT QQuickTabButton : public QQuickAbstractButton
+class Q_QUICKTEMPLATES_EXPORT QQuickTabButton : public QQuickAbstractButton
{
Q_OBJECT
public:
- explicit QQuickTabButton(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickTabButton(QQuickItem *parent = nullptr);
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
};
diff --git a/src/templates/qquicktextarea.cpp b/src/templates/qquicktextarea.cpp
index fce74338..d6285419 100644
--- a/src/templates/qquicktextarea.cpp
+++ b/src/templates/qquicktextarea.cpp
@@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE
*/
QQuickTextAreaPrivate::QQuickTextAreaPrivate()
- : background(Q_NULLPTR), focusReason(Qt::OtherFocusReason), accessibleAttached(Q_NULLPTR)
+ : background(nullptr), focusReason(Qt::OtherFocusReason), accessibleAttached(nullptr)
{
#ifndef QT_NO_ACCESSIBILITY
QAccessible::installActivationObserver(this);
@@ -141,7 +141,7 @@ QQuickTextArea::QQuickTextArea(QQuickItem *parent) :
Q_D(QQuickTextArea);
setActiveFocusOnTab(true);
d->setImplicitResizeEnabled(false);
- d->pressAndHoldHelper.control = this;
+ d->pressHandler.control = this;
QObjectPrivate::connect(this, &QQuickTextEdit::readOnlyChanged,
d, &QQuickTextAreaPrivate::_q_readOnlyChanged);
}
@@ -161,7 +161,7 @@ QQuickTextArea::~QQuickTextArea()
void QQuickTextAreaPrivate::resolveFont()
{
Q_Q(QQuickTextArea);
- inheritFont(QQuickControlPrivate::naturalControlFont(q));
+ inheritFont(QQuickControlPrivate::parentFont(q));
}
void QQuickTextAreaPrivate::inheritFont(const QFont &f)
@@ -170,7 +170,7 @@ void QQuickTextAreaPrivate::inheritFont(const QFont &f)
QFont parentFont = font.resolve(f);
parentFont.resolve(font.resolve() | f.resolve());
- const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont);
+ const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont);
const QFont resolvedFont = parentFont.resolve(defaultFont);
const bool changed = resolvedFont != sourceFont;
@@ -247,24 +247,26 @@ QQuickItem *QQuickTextArea::background() const
void QQuickTextArea::setBackground(QQuickItem *background)
{
Q_D(QQuickTextArea);
- if (d->background != background) {
- delete d->background;
- d->background = background;
- if (background) {
- background->setParentItem(this);
- if (qFuzzyIsNull(background->z()))
- background->setZ(-1);
- if (isComponentComplete())
- d->resizeBackground();
- }
- emit backgroundChanged();
+ if (d->background == background)
+ return;
+
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setParentItem(this);
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
+ if (isComponentComplete())
+ d->resizeBackground();
}
+ emit backgroundChanged();
}
/*!
\qmlproperty string Qt.labs.controls::TextArea::placeholderText
- This property holds the placeholder text.
+ This property holds the short hint that is displayed in the text area before
+ the user enters a value.
*/
QString QQuickTextArea::placeholderText() const
{
@@ -275,14 +277,15 @@ QString QQuickTextArea::placeholderText() const
void QQuickTextArea::setPlaceholderText(const QString &text)
{
Q_D(QQuickTextArea);
- if (d->placeholder != text) {
- d->placeholder = text;
+ if (d->placeholder == text)
+ return;
+
+ d->placeholder = text;
#ifndef QT_NO_ACCESSIBILITY
- if (d->accessibleAttached)
- d->accessibleAttached->setDescription(text);
+ if (d->accessibleAttached)
+ d->accessibleAttached->setDescription(text);
#endif
- emit placeholderTextChanged();
- }
+ emit placeholderTextChanged();
}
/*!
@@ -313,10 +316,11 @@ Qt::FocusReason QQuickTextArea::focusReason() const
void QQuickTextArea::setFocusReason(Qt::FocusReason reason)
{
Q_D(QQuickTextArea);
- if (d->focusReason != reason) {
- d->focusReason = reason;
- emit focusReasonChanged();
- }
+ if (d->focusReason == reason)
+ return;
+
+ d->focusReason = reason;
+ emit focusReasonChanged();
}
void QQuickTextArea::classBegin()
@@ -372,11 +376,11 @@ void QQuickTextArea::focusOutEvent(QFocusEvent *event)
void QQuickTextArea::mousePressEvent(QMouseEvent *event)
{
Q_D(QQuickTextArea);
- d->pressAndHoldHelper.mousePressEvent(event);
- if (d->pressAndHoldHelper.isActive()) {
- if (d->pressAndHoldHelper.delayedMousePressEvent) {
- QQuickTextEdit::mousePressEvent(d->pressAndHoldHelper.delayedMousePressEvent);
- d->pressAndHoldHelper.clearDelayedMouseEvent();
+ d->pressHandler.mousePressEvent(event);
+ if (d->pressHandler.isActive()) {
+ if (d->pressHandler.delayedMousePressEvent) {
+ QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent);
+ d->pressHandler.clearDelayedMouseEvent();
}
QQuickTextEdit::mousePressEvent(event);
}
@@ -385,11 +389,11 @@ void QQuickTextArea::mousePressEvent(QMouseEvent *event)
void QQuickTextArea::mouseMoveEvent(QMouseEvent *event)
{
Q_D(QQuickTextArea);
- d->pressAndHoldHelper.mouseMoveEvent(event);
- if (d->pressAndHoldHelper.isActive()) {
- if (d->pressAndHoldHelper.delayedMousePressEvent) {
- QQuickTextEdit::mousePressEvent(d->pressAndHoldHelper.delayedMousePressEvent);
- d->pressAndHoldHelper.clearDelayedMouseEvent();
+ d->pressHandler.mouseMoveEvent(event);
+ if (d->pressHandler.isActive()) {
+ if (d->pressHandler.delayedMousePressEvent) {
+ QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent);
+ d->pressHandler.clearDelayedMouseEvent();
}
QQuickTextEdit::mouseMoveEvent(event);
}
@@ -398,11 +402,11 @@ void QQuickTextArea::mouseMoveEvent(QMouseEvent *event)
void QQuickTextArea::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickTextArea);
- d->pressAndHoldHelper.mouseReleaseEvent(event);
- if (d->pressAndHoldHelper.isActive()) {
- if (d->pressAndHoldHelper.delayedMousePressEvent) {
- QQuickTextEdit::mousePressEvent(d->pressAndHoldHelper.delayedMousePressEvent);
- d->pressAndHoldHelper.clearDelayedMouseEvent();
+ d->pressHandler.mouseReleaseEvent(event);
+ if (d->pressHandler.isActive()) {
+ if (d->pressHandler.delayedMousePressEvent) {
+ QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent);
+ d->pressHandler.clearDelayedMouseEvent();
}
QQuickTextEdit::mouseReleaseEvent(event);
}
@@ -411,8 +415,8 @@ void QQuickTextArea::mouseReleaseEvent(QMouseEvent *event)
void QQuickTextArea::timerEvent(QTimerEvent *event)
{
Q_D(QQuickTextArea);
- if (event->timerId() == d->pressAndHoldHelper.timer.timerId()) {
- d->pressAndHoldHelper.timerEvent(event);
+ if (event->timerId() == d->pressHandler.timer.timerId()) {
+ d->pressHandler.timerEvent(event);
} else {
QQuickTextEdit::timerEvent(event);
}
diff --git a/src/templates/qquicktextarea_p.h b/src/templates/qquicktextarea_p.h
index acf67359..2e031c07 100644
--- a/src/templates/qquicktextarea_p.h
+++ b/src/templates/qquicktextarea_p.h
@@ -49,7 +49,7 @@
//
#include <QtQuick/private/qquicktextedit_p.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
QT_BEGIN_NAMESPACE
@@ -57,7 +57,7 @@ class QQuickText;
class QQuickTextAreaPrivate;
class QQuickMouseEvent;
-class Q_LABSTEMPLATES_EXPORT QQuickTextArea : public QQuickTextEdit
+class Q_QUICKTEMPLATES_EXPORT QQuickTextArea : public QQuickTextEdit
{
Q_OBJECT
Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override
@@ -68,7 +68,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickTextArea : public QQuickTextEdit
Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL)
public:
- explicit QQuickTextArea(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickTextArea(QQuickItem *parent = nullptr);
~QQuickTextArea();
QFont font() const;
@@ -93,18 +93,18 @@ Q_SIGNALS:
void pressAndHold(QQuickMouseEvent *event);
protected:
- void classBegin() Q_DECL_OVERRIDE;
-
- void itemChange(ItemChange change, const ItemChangeData &value) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) Q_DECL_OVERRIDE;
-
- void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
+ void classBegin() override;
+
+ void itemChange(ItemChange change, const ItemChangeData &value) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) override;
+
+ void focusInEvent(QFocusEvent *event) override;
+ void focusOutEvent(QFocusEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void timerEvent(QTimerEvent *event) override;
private:
Q_DISABLE_COPY(QQuickTextArea)
diff --git a/src/templates/qquicktextarea_p_p.h b/src/templates/qquicktextarea_p_p.h
index f93eb968..d92f03c8 100644
--- a/src/templates/qquicktextarea_p_p.h
+++ b/src/templates/qquicktextarea_p_p.h
@@ -49,7 +49,7 @@
//
#include <QtQuick/private/qquicktextedit_p_p.h>
-#include <QtLabsTemplates/private/qquickpressandholdhelper_p.h>
+#include <QtQuickTemplates/private/qquickpresshandler_p_p.h>
#include "qquicktextarea_p.h"
@@ -79,24 +79,24 @@ public:
void resolveFont();
void inheritFont(const QFont &f);
- qreal getImplicitWidth() const Q_DECL_OVERRIDE;
- qreal getImplicitHeight() const Q_DECL_OVERRIDE;
+ qreal getImplicitWidth() const override;
+ qreal getImplicitHeight() const override;
- void implicitWidthChanged() Q_DECL_OVERRIDE;
- void implicitHeightChanged() Q_DECL_OVERRIDE;
+ void implicitWidthChanged() override;
+ void implicitHeightChanged() override;
void _q_readOnlyChanged(bool isReadOnly);
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
QFont font;
QQuickItem *background;
QString placeholder;
Qt::FocusReason focusReason;
- QQuickPressAndHoldHelper pressAndHoldHelper;
+ QQuickPressHandler pressHandler;
QQuickAccessibleAttached *accessibleAttached;
};
diff --git a/src/templates/qquicktextfield.cpp b/src/templates/qquicktextfield.cpp
index b04940f0..c2c32eb7 100644
--- a/src/templates/qquicktextfield.cpp
+++ b/src/templates/qquicktextfield.cpp
@@ -63,11 +63,11 @@ QT_BEGIN_NAMESPACE
a \l {placeholderText}{placeholder text} functionality, and adds decoration.
\table
- \row \li \image qtlabscontrols-textfield-normal.png
+ \row \li \image qtquickcontrols-textfield-normal.png
\li A text field in its normal state.
- \row \li \image qtlabscontrols-textfield-focused.png
+ \row \li \image qtquickcontrols-textfield-focused.png
\li A text field that has active focus.
- \row \li \image qtlabscontrols-textfield-disabled.png
+ \row \li \image qtquickcontrols-textfield-disabled.png
\li A text field that is disabled.
\endtable
@@ -91,9 +91,9 @@ QT_BEGIN_NAMESPACE
*/
QQuickTextFieldPrivate::QQuickTextFieldPrivate()
- : background(Q_NULLPTR)
+ : background(nullptr)
, focusReason(Qt::OtherFocusReason)
- , accessibleAttached(Q_NULLPTR)
+ , accessibleAttached(nullptr)
{
#ifndef QT_NO_ACCESSIBILITY
QAccessible::installActivationObserver(this);
@@ -151,7 +151,7 @@ QQuickTextField::QQuickTextField(QQuickItem *parent) :
QQuickTextInput(*(new QQuickTextFieldPrivate), parent)
{
Q_D(QQuickTextField);
- d->pressAndHoldHelper.control = this;
+ d->pressHandler.control = this;
d->setImplicitResizeEnabled(false);
setActiveFocusOnTab(true);
QObjectPrivate::connect(this, &QQuickTextInput::readOnlyChanged,
@@ -175,7 +175,7 @@ QQuickTextField::~QQuickTextField()
void QQuickTextFieldPrivate::resolveFont()
{
Q_Q(QQuickTextField);
- inheritFont(QQuickControlPrivate::naturalControlFont(q));
+ inheritFont(QQuickControlPrivate::parentFont(q));
}
void QQuickTextFieldPrivate::inheritFont(const QFont &f)
@@ -184,7 +184,7 @@ void QQuickTextFieldPrivate::inheritFont(const QFont &f)
QFont parentFont = font.resolve(f);
parentFont.resolve(font.resolve() | f.resolve());
- const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont);
+ const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont);
const QFont resolvedFont = parentFont.resolve(defaultFont);
const bool changed = resolvedFont != sourceFont;
@@ -272,24 +272,26 @@ QQuickItem *QQuickTextField::background() const
void QQuickTextField::setBackground(QQuickItem *background)
{
Q_D(QQuickTextField);
- if (d->background != background) {
- delete d->background;
- d->background = background;
- if (background) {
- background->setParentItem(this);
- if (qFuzzyIsNull(background->z()))
- background->setZ(-1);
- if (isComponentComplete())
- d->resizeBackground();
- }
- emit backgroundChanged();
+ if (d->background == background)
+ return;
+
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setParentItem(this);
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
+ if (isComponentComplete())
+ d->resizeBackground();
}
+ emit backgroundChanged();
}
/*!
\qmlproperty string Qt.labs.controls::TextField::placeholderText
- This property holds the placeholder text.
+ This property holds the hint that is displayed in the TextField before the user
+ enters text.
*/
QString QQuickTextField::placeholderText() const
{
@@ -300,14 +302,15 @@ QString QQuickTextField::placeholderText() const
void QQuickTextField::setPlaceholderText(const QString &text)
{
Q_D(QQuickTextField);
- if (d->placeholder != text) {
- d->placeholder = text;
+ if (d->placeholder == text)
+ return;
+
+ d->placeholder = text;
#ifndef QT_NO_ACCESSIBILITY
- if (d->accessibleAttached)
- d->accessibleAttached->setDescription(text);
+ if (d->accessibleAttached)
+ d->accessibleAttached->setDescription(text);
#endif
- emit placeholderTextChanged();
- }
+ emit placeholderTextChanged();
}
/*!
@@ -338,10 +341,11 @@ Qt::FocusReason QQuickTextField::focusReason() const
void QQuickTextField::setFocusReason(Qt::FocusReason reason)
{
Q_D(QQuickTextField);
- if (d->focusReason != reason) {
- d->focusReason = reason;
- emit focusReasonChanged();
- }
+ if (d->focusReason == reason)
+ return;
+
+ d->focusReason = reason;
+ emit focusReasonChanged();
}
void QQuickTextField::classBegin()
@@ -397,11 +401,11 @@ void QQuickTextField::focusOutEvent(QFocusEvent *event)
void QQuickTextField::mousePressEvent(QMouseEvent *event)
{
Q_D(QQuickTextField);
- d->pressAndHoldHelper.mousePressEvent(event);
- if (d->pressAndHoldHelper.isActive()) {
- if (d->pressAndHoldHelper.delayedMousePressEvent) {
- QQuickTextInput::mousePressEvent(d->pressAndHoldHelper.delayedMousePressEvent);
- d->pressAndHoldHelper.clearDelayedMouseEvent();
+ d->pressHandler.mousePressEvent(event);
+ if (d->pressHandler.isActive()) {
+ if (d->pressHandler.delayedMousePressEvent) {
+ QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent);
+ d->pressHandler.clearDelayedMouseEvent();
}
QQuickTextInput::mousePressEvent(event);
}
@@ -410,11 +414,11 @@ void QQuickTextField::mousePressEvent(QMouseEvent *event)
void QQuickTextField::mouseMoveEvent(QMouseEvent *event)
{
Q_D(QQuickTextField);
- d->pressAndHoldHelper.mouseMoveEvent(event);
- if (d->pressAndHoldHelper.isActive()) {
- if (d->pressAndHoldHelper.delayedMousePressEvent) {
- QQuickTextInput::mousePressEvent(d->pressAndHoldHelper.delayedMousePressEvent);
- d->pressAndHoldHelper.clearDelayedMouseEvent();
+ d->pressHandler.mouseMoveEvent(event);
+ if (d->pressHandler.isActive()) {
+ if (d->pressHandler.delayedMousePressEvent) {
+ QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent);
+ d->pressHandler.clearDelayedMouseEvent();
}
QQuickTextInput::mouseMoveEvent(event);
}
@@ -423,11 +427,11 @@ void QQuickTextField::mouseMoveEvent(QMouseEvent *event)
void QQuickTextField::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickTextField);
- d->pressAndHoldHelper.mouseReleaseEvent(event);
- if (d->pressAndHoldHelper.isActive()) {
- if (d->pressAndHoldHelper.delayedMousePressEvent) {
- QQuickTextInput::mousePressEvent(d->pressAndHoldHelper.delayedMousePressEvent);
- d->pressAndHoldHelper.clearDelayedMouseEvent();
+ d->pressHandler.mouseReleaseEvent(event);
+ if (d->pressHandler.isActive()) {
+ if (d->pressHandler.delayedMousePressEvent) {
+ QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent);
+ d->pressHandler.clearDelayedMouseEvent();
}
QQuickTextInput::mouseReleaseEvent(event);
}
@@ -436,8 +440,8 @@ void QQuickTextField::mouseReleaseEvent(QMouseEvent *event)
void QQuickTextField::timerEvent(QTimerEvent *event)
{
Q_D(QQuickTextField);
- if (event->timerId() == d->pressAndHoldHelper.timer.timerId()) {
- d->pressAndHoldHelper.timerEvent(event);
+ if (event->timerId() == d->pressHandler.timer.timerId()) {
+ d->pressHandler.timerEvent(event);
} else {
QQuickTextInput::timerEvent(event);
}
diff --git a/src/templates/qquicktextfield_p.h b/src/templates/qquicktextfield_p.h
index 23658cc6..00d6d0c7 100644
--- a/src/templates/qquicktextfield_p.h
+++ b/src/templates/qquicktextfield_p.h
@@ -49,7 +49,7 @@
//
#include <QtQuick/private/qquicktextinput_p.h>
-#include <QtLabsTemplates/private/qtlabstemplatesglobal_p.h>
+#include <QtQuickTemplates/private/qtquicktemplatesglobal_p.h>
QT_BEGIN_NAMESPACE
@@ -57,7 +57,7 @@ class QQuickText;
class QQuickTextFieldPrivate;
class QQuickMouseEvent;
-class Q_LABSTEMPLATES_EXPORT QQuickTextField : public QQuickTextInput
+class Q_QUICKTEMPLATES_EXPORT QQuickTextField : public QQuickTextInput
{
Q_OBJECT
Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override
@@ -68,7 +68,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickTextField : public QQuickTextInput
Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL)
public:
- explicit QQuickTextField(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickTextField(QQuickItem *parent = nullptr);
~QQuickTextField();
QFont font() const;
@@ -93,18 +93,18 @@ Q_SIGNALS:
void pressAndHold(QQuickMouseEvent *mouse);
protected:
- void classBegin() Q_DECL_OVERRIDE;
-
- void itemChange(ItemChange change, const ItemChangeData &value) Q_DECL_OVERRIDE;
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) Q_DECL_OVERRIDE;
-
- void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
+ void classBegin() override;
+
+ void itemChange(ItemChange change, const ItemChangeData &value) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) override;
+
+ void focusInEvent(QFocusEvent *event) override;
+ void focusOutEvent(QFocusEvent *event) override;
+ void mousePressEvent(QMouseEvent *event) override;
+ void mouseMoveEvent(QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void timerEvent(QTimerEvent *event) override;
private:
Q_DISABLE_COPY(QQuickTextField)
diff --git a/src/templates/qquicktextfield_p_p.h b/src/templates/qquicktextfield_p_p.h
index 6cf0805e..e8e68cbb 100644
--- a/src/templates/qquicktextfield_p_p.h
+++ b/src/templates/qquicktextfield_p_p.h
@@ -49,7 +49,7 @@
//
#include <QtQuick/private/qquicktextinput_p_p.h>
-#include <QtLabsTemplates/private/qquickpressandholdhelper_p.h>
+#include <QtQuickTemplates/private/qquickpresshandler_p_p.h>
#include "qquicktextfield_p.h"
@@ -79,25 +79,25 @@ public:
void resolveFont();
void inheritFont(const QFont &f);
- qreal getImplicitWidth() const Q_DECL_OVERRIDE;
- qreal getImplicitHeight() const Q_DECL_OVERRIDE;
+ qreal getImplicitWidth() const override;
+ qreal getImplicitHeight() const override;
- void implicitWidthChanged() Q_DECL_OVERRIDE;
- void implicitHeightChanged() Q_DECL_OVERRIDE;
+ void implicitWidthChanged() override;
+ void implicitHeightChanged() override;
void _q_readOnlyChanged(bool isReadOnly);
void _q_echoModeChanged(QQuickTextField::EchoMode echoMode);
#ifndef QT_NO_ACCESSIBILITY
- void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE;
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ void accessibilityActiveChanged(bool active) override;
+ QAccessible::Role accessibleRole() const override;
#endif
QFont font;
QQuickItem *background;
QString placeholder;
Qt::FocusReason focusReason;
- QQuickPressAndHoldHelper pressAndHoldHelper;
+ QQuickPressHandler pressHandler;
QQuickAccessibleAttached *accessibleAttached;
};
diff --git a/src/templates/qquicktoolbar.cpp b/src/templates/qquicktoolbar.cpp
index 882834e3..c46e534c 100644
--- a/src/templates/qquicktoolbar.cpp
+++ b/src/templates/qquicktoolbar.cpp
@@ -35,6 +35,7 @@
****************************************************************************/
#include "qquicktoolbar_p.h"
+#include "qquickframe_p_p.h"
QT_BEGIN_NAMESPACE
@@ -44,7 +45,7 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickToolBar
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-containers
- \brief A tool bar control.
+ \brief A container with context-sensitive controls.
ToolBar is a container of application-wide and context sensitive
actions and controls, such as navigation buttons and search fields.
@@ -57,7 +58,7 @@ QT_BEGIN_NAMESPACE
implicit size of its contained item. This makes it particularly suitable
for use together with layouts.
- \image qtlabscontrols-toolbar.png
+ \image qtquickcontrols-toolbar.png
\code
ApplicationWindow {
@@ -91,11 +92,51 @@ QT_BEGIN_NAMESPACE
\sa ApplicationWindow, ToolButton, {Customizing ToolBar}, {Container Controls}
*/
+class QQuickToolBarPrivate : public QQuickFramePrivate
+{
+public:
+ QQuickToolBarPrivate() : position(QQuickToolBar::Header) { }
+
+ QQuickToolBar::Position position;
+};
+
QQuickToolBar::QQuickToolBar(QQuickItem *parent) :
- QQuickFrame(parent)
+ QQuickFrame(*(new QQuickToolBarPrivate), parent)
{
}
+/*!
+ \qmlproperty enumeration Qt.labs.controls::ToolBar::position
+
+ This property holds the position of the toolbar.
+
+ \note If the toolbar is assigned as a header or footer of ApplicationWindow
+ or Page, the appropriate position is set automatically.
+
+ Possible values:
+ \value ToolBar.Header The toolbar is at the top, as a window or page header.
+ \value ToolBar.Footer The toolbar is at the bottom, as a window or page footer.
+
+ The default value is style-specific.
+
+ \sa ApplicationWindow::header, ApplicationWindow::footer, Page::header, Page::footer
+*/
+QQuickToolBar::Position QQuickToolBar::position() const
+{
+ Q_D(const QQuickToolBar);
+ return d->position;
+}
+
+void QQuickToolBar::setPosition(Position position)
+{
+ Q_D(QQuickToolBar);
+ if (d->position == position)
+ return;
+
+ d->position = position;
+ emit positionChanged();
+}
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role QQuickToolBar::accessibleRole() const
{
diff --git a/src/templates/qquicktoolbar_p.h b/src/templates/qquicktoolbar_p.h
index 501f74c7..fe62c127 100644
--- a/src/templates/qquicktoolbar_p.h
+++ b/src/templates/qquicktoolbar_p.h
@@ -48,21 +48,40 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickframe_p.h>
+#include <QtQuickTemplates/private/qquickframe_p.h>
QT_BEGIN_NAMESPACE
-class Q_LABSTEMPLATES_EXPORT QQuickToolBar : public QQuickFrame
+class QQuickToolBarPrivate;
+
+class Q_QUICKTEMPLATES_EXPORT QQuickToolBar : public QQuickFrame
{
Q_OBJECT
+ Q_PROPERTY(Position position READ position WRITE setPosition NOTIFY positionChanged FINAL)
public:
- explicit QQuickToolBar(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickToolBar(QQuickItem *parent = nullptr);
+
+ enum Position {
+ Header,
+ Footer
+ };
+ Q_ENUM(Position)
+
+ Position position() const;
+ void setPosition(Position position);
+
+Q_SIGNALS:
+ void positionChanged();
protected:
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
+ QAccessible::Role accessibleRole() const override;
#endif
+
+private:
+ Q_DISABLE_COPY(QQuickToolBar)
+ Q_DECLARE_PRIVATE(QQuickToolBar)
};
QT_END_NAMESPACE
diff --git a/src/templates/qquicktoolbutton.cpp b/src/templates/qquicktoolbutton.cpp
index 775eedd1..d04358f5 100644
--- a/src/templates/qquicktoolbutton.cpp
+++ b/src/templates/qquicktoolbutton.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
\instantiates QQuickToolButton
\inqmlmodule Qt.labs.controls
\ingroup qtlabscontrols-buttons
- \brief A tool button control.
+ \brief A button with a layout suitable for a ToolBar.
ToolButton is functionally similar to \l Button, but provides a look that
is more suitable within a \l ToolBar.
diff --git a/src/templates/qquicktoolbutton_p.h b/src/templates/qquicktoolbutton_p.h
index 25f2134d..dda0668e 100644
--- a/src/templates/qquicktoolbutton_p.h
+++ b/src/templates/qquicktoolbutton_p.h
@@ -48,19 +48,19 @@
// We mean it.
//
-#include <QtLabsTemplates/private/qquickbutton_p.h>
+#include <QtQuickTemplates/private/qquickbutton_p.h>
QT_BEGIN_NAMESPACE
-class Q_LABSTEMPLATES_EXPORT QQuickToolButton : public QQuickButton
+class Q_QUICKTEMPLATES_EXPORT QQuickToolButton : public QQuickButton
{
Q_OBJECT
public:
- explicit QQuickToolButton(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickToolButton(QQuickItem *parent = nullptr);
protected:
- QFont defaultFont() const Q_DECL_OVERRIDE;
+ QFont defaultFont() const override;
};
QT_END_NAMESPACE
diff --git a/src/templates/qquicktumbler.cpp b/src/templates/qquicktumbler.cpp
index c5b3f676..de0c1be8 100644
--- a/src/templates/qquicktumbler.cpp
+++ b/src/templates/qquicktumbler.cpp
@@ -37,7 +37,7 @@
#include "qquicktumbler_p.h"
#include <QtQuick/private/qquickflickable_p.h>
-#include <QtLabsTemplates/private/qquickcontrol_p_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p_p.h>
QT_BEGIN_NAMESPACE
@@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE
\snippet tst_tumbler.qml contentItem
- \image qtlabscontrols-tumbler-wrap.gif
+ \image qtquickcontrols-tumbler-wrap.gif
\labs
@@ -77,7 +77,7 @@ class QQuickTumblerPrivate : public QQuickControlPrivate, public QQuickItemChang
public:
QQuickTumblerPrivate() :
- delegate(Q_NULLPTR),
+ delegate(nullptr),
visibleItemCount(3)
{
}
@@ -93,8 +93,8 @@ public:
void _q_updateItemHeights();
void _q_updateItemWidths();
- void itemChildAdded(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
- void itemChildRemoved(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
+ void itemChildAdded(QQuickItem *, QQuickItem *) override;
+ void itemChildRemoved(QQuickItem *, QQuickItem *) override;
};
static QList<QQuickItem *> contentItemChildItems(QQuickItem *contentItem)
@@ -126,7 +126,7 @@ namespace {
else if (contentType == ListViewContentItem)
return qobject_cast<QQuickFlickable*>(rootContentItem)->contentItem();
- return Q_NULLPTR;
+ return nullptr;
}
static inline ContentItemType contentItemType(QQuickItem *rootContentItem)
@@ -158,7 +158,8 @@ void QQuickTumblerPrivate::_q_updateItemHeights()
// which doesn't affect them, only their getters.
Q_Q(const QQuickTumbler);
const qreal itemHeight = delegateHeight(q);
- foreach (QQuickItem *childItem, contentItemChildItems(contentItem))
+ const auto items = contentItemChildItems(contentItem);
+ for (QQuickItem *childItem : items)
childItem->setHeight(itemHeight);
}
@@ -166,7 +167,8 @@ void QQuickTumblerPrivate::_q_updateItemWidths()
{
Q_Q(const QQuickTumbler);
const qreal availableWidth = q->availableWidth();
- foreach (QQuickItem *childItem, contentItemChildItems(contentItem))
+ const auto items = contentItemChildItems(contentItem);
+ for (QQuickItem *childItem : items)
childItem->setWidth(availableWidth);
}
@@ -211,10 +213,11 @@ QVariant QQuickTumbler::model() const
void QQuickTumbler::setModel(const QVariant &model)
{
Q_D(QQuickTumbler);
- if (model != d->model) {
- d->model = model;
- emit modelChanged();
- }
+ if (model == d->model)
+ return;
+
+ d->model = model;
+ emit modelChanged();
}
/*!
@@ -255,7 +258,7 @@ void QQuickTumbler::setCurrentIndex(int currentIndex)
QQuickItem *QQuickTumbler::currentItem() const
{
Q_D(const QQuickTumbler);
- return d->contentItem ? d->contentItem->property("currentItem").value<QQuickItem*>() : Q_NULLPTR;
+ return d->contentItem ? d->contentItem->property("currentItem").value<QQuickItem*>() : nullptr;
}
/*!
@@ -272,10 +275,11 @@ QQmlComponent *QQuickTumbler::delegate() const
void QQuickTumbler::setDelegate(QQmlComponent *delegate)
{
Q_D(QQuickTumbler);
- if (delegate != d->delegate) {
- d->delegate = delegate;
- emit delegateChanged();
- }
+ if (delegate == d->delegate)
+ return;
+
+ d->delegate = delegate;
+ emit delegateChanged();
}
/*!
@@ -293,11 +297,12 @@ int QQuickTumbler::visibleItemCount() const
void QQuickTumbler::setVisibleItemCount(int visibleItemCount)
{
Q_D(QQuickTumbler);
- if (visibleItemCount != d->visibleItemCount) {
- d->visibleItemCount = visibleItemCount;
- d->_q_updateItemHeights();
- emit visibleItemCountChanged();
- }
+ if (visibleItemCount == d->visibleItemCount)
+ return;
+
+ d->visibleItemCount = visibleItemCount;
+ d->_q_updateItemHeights();
+ emit visibleItemCountChanged();
}
QQuickTumblerAttached *QQuickTumbler::qmlAttachedProperties(QObject *object)
@@ -305,7 +310,7 @@ QQuickTumblerAttached *QQuickTumbler::qmlAttachedProperties(QObject *object)
QQuickItem *delegateItem = qobject_cast<QQuickItem *>(object);
if (!delegateItem) {
qWarning() << "Tumbler: attached properties of Tumbler must be accessed from within a delegate item";
- return Q_NULLPTR;
+ return nullptr;
}
return new QQuickTumblerAttached(delegateItem);
@@ -398,7 +403,7 @@ class QQuickTumblerAttachedPrivate : public QObjectPrivate, public QQuickItemCha
Q_DECLARE_PUBLIC(QQuickTumblerAttached)
public:
QQuickTumblerAttachedPrivate(QQuickItem *delegateItem) :
- tumbler(Q_NULLPTR),
+ tumbler(nullptr),
index(-1),
displacement(1)
{
@@ -427,9 +432,9 @@ public:
~QQuickTumblerAttachedPrivate() {
}
- void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void itemChildAdded(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
- void itemChildRemoved(QQuickItem *, QQuickItem *) Q_DECL_OVERRIDE;
+ void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void itemChildAdded(QQuickItem *, QQuickItem *) override;
+ void itemChildRemoved(QQuickItem *, QQuickItem *) override;
void _q_calculateDisplacement();
@@ -472,8 +477,9 @@ void QQuickTumblerAttachedPrivate::_q_calculateDisplacement()
const int previousDisplacement = displacement;
displacement = 0;
+ const int count = tumbler->count();
// This can happen in tests, so it may happen in normal usage too.
- if (tumbler->count() == 0)
+ if (count == 0)
return;
ContentItemType contentType = contentItemType(tumbler->contentItem());
@@ -485,12 +491,12 @@ void QQuickTumblerAttachedPrivate::_q_calculateDisplacement()
if (contentType == PathViewContentItem) {
offset = tumbler->contentItem()->property("offset").toReal();
- displacement = tumbler->count() - index - offset;
+ displacement = count - index - offset;
int halfVisibleItems = tumbler->visibleItemCount() / 2 + 1;
if (displacement > halfVisibleItems)
- displacement -= tumbler->count();
+ displacement -= count;
else if (displacement < -halfVisibleItems)
- displacement += tumbler->count();
+ displacement += count;
} else {
const qreal contentY = tumbler->contentItem()->property("contentY").toReal();
const qreal delegateH = delegateHeight(tumbler);
diff --git a/src/templates/qquicktumbler_p.h b/src/templates/qquicktumbler_p.h
index ad57acbb..7b0126ce 100644
--- a/src/templates/qquicktumbler_p.h
+++ b/src/templates/qquicktumbler_p.h
@@ -50,14 +50,14 @@
#include <QtCore/qvariant.h>
#include <QtQml/qqmlcomponent.h>
-#include <QtLabsTemplates/private/qquickcontrol_p.h>
+#include <QtQuickTemplates/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQuickTumblerAttached;
class QQuickTumblerPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickTumbler : public QQuickControl
+class Q_QUICKTEMPLATES_EXPORT QQuickTumbler : public QQuickControl
{
Q_OBJECT
Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged FINAL)
@@ -68,7 +68,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickTumbler : public QQuickControl
Q_PROPERTY(int visibleItemCount READ visibleItemCount WRITE setVisibleItemCount NOTIFY visibleItemCountChanged FINAL)
public:
- explicit QQuickTumbler(QQuickItem *parent = Q_NULLPTR);
+ explicit QQuickTumbler(QQuickItem *parent = nullptr);
~QQuickTumbler();
QVariant model() const;
@@ -97,10 +97,10 @@ Q_SIGNALS:
void visibleItemCountChanged();
protected:
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
- void componentComplete() Q_DECL_OVERRIDE;
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void componentComplete() override;
+ void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
+ void keyPressEvent(QKeyEvent *event) override;
private:
Q_DISABLE_COPY(QQuickTumbler)
@@ -112,7 +112,7 @@ private:
class QQuickTumblerAttachedPrivate;
-class Q_LABSTEMPLATES_EXPORT QQuickTumblerAttached : public QObject
+class Q_QUICKTEMPLATES_EXPORT QQuickTumblerAttached : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickTumbler *tumbler READ tumbler CONSTANT)
diff --git a/src/templates/qquickvelocitycalculator.cpp b/src/templates/qquickvelocitycalculator.cpp
new file mode 100644
index 00000000..3d5fa4a4
--- /dev/null
+++ b/src/templates/qquickvelocitycalculator.cpp
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Templates module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qquickvelocitycalculator_p_p.h"
+
+#include <QtCore/qdebug.h>
+
+QT_BEGIN_NAMESPACE
+
+/*
+ Usage:
+
+ QQuickVelocityCalculator velocityCalculator;
+
+ // ...
+
+ velocityCalcular.startMeasuring(event->pos(), event->timestamp());
+ velocityCalcular.stopMeasuring(event->pos(), event->timestamp());
+
+ // ...
+
+ if (velocityCalculator.velocity().x() > someAmount)
+ doSomething();
+ else if (velocityCalculator.velocity().x() < -someAmount)
+ doSomethingElse();
+*/
+
+QQuickVelocityCalculator::QQuickVelocityCalculator() :
+ m_point1Timestamp(0),
+ m_point2Timestamp(0)
+{
+}
+
+void QQuickVelocityCalculator::startMeasuring(const QPointF &point1, qint64 timestamp)
+{
+ m_point1 = point1;
+
+ if (timestamp != 0)
+ m_point1Timestamp = timestamp;
+ else
+ m_timer.start();
+}
+
+void QQuickVelocityCalculator::stopMeasuring(const QPointF &point2, qint64 timestamp)
+{
+ if (timestamp == 0 && !m_timer.isValid()) {
+ qWarning() << "QQuickVelocityCalculator: a call to stopMeasuring() must be preceded by a call to startMeasuring()";
+ return;
+ }
+
+ m_point2 = point2;
+ m_point2Timestamp = timestamp != 0 ? timestamp : m_timer.elapsed();
+ m_timer.invalidate();
+}
+
+void QQuickVelocityCalculator::reset()
+{
+ m_point1 = QPointF();
+ m_point2 = QPointF();
+ m_point1Timestamp = 0;
+ m_point2Timestamp = 0;
+ m_timer.invalidate();
+}
+
+QPointF QQuickVelocityCalculator::velocity() const
+{
+ if ((m_point2Timestamp == 0 || m_point1Timestamp == m_point2Timestamp) && !m_timer.isValid())
+ return QPointF();
+
+ const qreal secondsElapsed = (m_point2Timestamp != 0 ? m_point2Timestamp - m_point1Timestamp : m_timer.elapsed()) / 1000.0;
+ const QPointF distance = m_point2 - m_point1;
+ return distance / secondsElapsed;
+}
+
+QT_END_NAMESPACE
diff --git a/src/templates/qquickvelocitycalculator_p_p.h b/src/templates/qquickvelocitycalculator_p_p.h
new file mode 100644
index 00000000..bb4733ac
--- /dev/null
+++ b/src/templates/qquickvelocitycalculator_p_p.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Labs Templates module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKVELOCITYCALCULATOR_P_P_H
+#define QQUICKVELOCITYCALCULATOR_P_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qpoint.h>
+#include <QtCore/qelapsedtimer.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickVelocityCalculator
+{
+public:
+ QQuickVelocityCalculator();
+
+ void startMeasuring(const QPointF &point1, qint64 timestamp = 0);
+ void stopMeasuring(const QPointF &m_point2, qint64 timestamp = 0);
+ void reset();
+ QPointF velocity() const;
+
+private:
+ QPointF m_point1;
+ QPointF m_point2;
+ qint64 m_point1Timestamp;
+ qint64 m_point2Timestamp;
+ // When a timestamp isn't available, we must use a timer.
+ // When stopMeasuring() has been called, we store the elapsed time in point2timestamp.
+ QElapsedTimer m_timer;
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKVELOCITYCALCULATOR_P_P_H
diff --git a/src/templates/qtlabstemplatesglobal_p.h b/src/templates/qtquicktemplatesglobal_p.h
index 432240e2..671a1ed0 100644
--- a/src/templates/qtlabstemplatesglobal_p.h
+++ b/src/templates/qtquicktemplatesglobal_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QTLABSTEMPLATESGLOBAL_P_H
-#define QTLABSTEMPLATESGLOBAL_P_H
+#ifndef QTQUICKTEMPLATESGLOBAL_H
+#define QTQUICKTEMPLATESGLOBAL_H
//
// W A R N I N G
@@ -53,15 +53,15 @@
QT_BEGIN_NAMESPACE
#ifndef QT_STATIC
-# if defined(QT_BUILD_LABSTEMPLATES_LIB)
-# define Q_LABSTEMPLATES_EXPORT Q_DECL_EXPORT
+# if defined(QT_BUILD_QUICKTEMPLATES_LIB)
+# define Q_QUICKTEMPLATES_EXPORT Q_DECL_EXPORT
# else
-# define Q_LABSTEMPLATES_EXPORT Q_DECL_IMPORT
+# define Q_QUICKTEMPLATES_EXPORT Q_DECL_IMPORT
# endif
#else
-# define Q_LABSTEMPLATES_EXPORT
+# define Q_QUICKTEMPLATES_EXPORT
#endif
QT_END_NAMESPACE
-#endif // QTLABSTEMPLATESGLOBAL_P_H
+#endif // QTQUICKTEMPLATESGLOBAL_H
diff --git a/src/templates/templates.pri b/src/templates/templates.pri
index c4651d82..fccf1972 100644
--- a/src/templates/templates.pri
+++ b/src/templates/templates.pri
@@ -31,7 +31,7 @@ HEADERS += \
$$PWD/qquickpane_p_p.h \
$$PWD/qquickpopup_p.h \
$$PWD/qquickpopup_p_p.h \
- $$PWD/qquickpressandholdhelper_p.h \
+ $$PWD/qquickpresshandler_p_p.h \
$$PWD/qquickprogressbar_p.h \
$$PWD/qquickradiobutton_p.h \
$$PWD/qquickrangeslider_p.h \
@@ -41,6 +41,7 @@ HEADERS += \
$$PWD/qquickspinbox_p.h \
$$PWD/qquickstackview_p.h \
$$PWD/qquickstackview_p_p.h \
+ $$PWD/qquickswipedelegate_p.h \
$$PWD/qquickswipeview_p.h \
$$PWD/qquickswitch_p.h \
$$PWD/qquicktabbar_p.h \
@@ -51,7 +52,8 @@ HEADERS += \
$$PWD/qquicktextfield_p_p.h \
$$PWD/qquicktoolbar_p.h \
$$PWD/qquicktoolbutton_p.h \
- $$PWD/qquicktumbler_p.h
+ $$PWD/qquicktumbler_p.h \
+ $$PWD/qquickvelocitycalculator_p_p.h
SOURCES += \
$$PWD/qquickabstractbutton.cpp \
@@ -76,7 +78,7 @@ SOURCES += \
$$PWD/qquickpageindicator.cpp \
$$PWD/qquickpane.cpp \
$$PWD/qquickpopup.cpp \
- $$PWD/qquickpressandholdhelper.cpp \
+ $$PWD/qquickpresshandler.cpp \
$$PWD/qquickprogressbar.cpp \
$$PWD/qquickradiobutton.cpp \
$$PWD/qquickrangeslider.cpp \
@@ -86,6 +88,7 @@ SOURCES += \
$$PWD/qquickspinbox.cpp \
$$PWD/qquickstackview.cpp \
$$PWD/qquickstackview_p.cpp \
+ $$PWD/qquickswipedelegate.cpp \
$$PWD/qquickswipeview.cpp \
$$PWD/qquickswitch.cpp \
$$PWD/qquicktabbar.cpp \
@@ -94,4 +97,5 @@ SOURCES += \
$$PWD/qquicktextfield.cpp \
$$PWD/qquicktoolbar.cpp \
$$PWD/qquicktoolbutton.cpp \
- $$PWD/qquicktumbler.cpp
+ $$PWD/qquicktumbler.cpp \
+ $$PWD/qquickvelocitycalculator.cpp
diff --git a/src/templates/templates.pro b/src/templates/templates.pro
index 36273577..f28a82ab 100644
--- a/src/templates/templates.pro
+++ b/src/templates/templates.pro
@@ -1,5 +1,5 @@
-TARGET = QtLabsTemplates
-MODULE = labstemplates
+TARGET = QtQuickTemplates
+MODULE = quicktemplates
CONFIG += internal_module
QT += quick
@@ -8,7 +8,7 @@ QT_PRIVATE += core-private gui-private qml-private quick-private
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
HEADERS += \
- $$PWD/qtlabstemplatesglobal_p.h
+ $$PWD/qtquicktemplatesglobal_p.h
include(templates.pri)
load(qt_module)