aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/calendar/qquickcalendar.cpp2
-rw-r--r--src/imports/calendar/qquickcalendarmodel.cpp38
-rw-r--r--src/imports/calendar/qquickmonthgrid.cpp2
-rw-r--r--src/imports/calendar/qquickweeknumbercolumn.cpp2
-rw-r--r--src/imports/controls/ComboBox.qml2
-rw-r--r--src/imports/controls/controls.pro2
-rw-r--r--src/imports/controls/designer/designer.pri3
-rw-r--r--src/imports/controls/designer/images/busyindicator-icon.pngbin0 -> 1238 bytes
-rw-r--r--src/imports/controls/designer/images/busyindicator-icon16.pngbin0 -> 1203 bytes
-rw-r--r--src/imports/controls/designer/images/busyindicator-icon16@2x.pngbin0 -> 1345 bytes
-rw-r--r--src/imports/controls/designer/images/busyindicator-icon@2x.pngbin0 -> 1324 bytes
-rw-r--r--src/imports/controls/designer/images/button-icon.pngbin0 -> 1046 bytes
-rw-r--r--src/imports/controls/designer/images/button-icon16.pngbin0 -> 1037 bytes
-rw-r--r--src/imports/controls/designer/images/button-icon16@2x.pngbin0 -> 1067 bytes
-rw-r--r--src/imports/controls/designer/images/button-icon@2x.pngbin0 -> 1089 bytes
-rw-r--r--src/imports/controls/designer/images/checkbox-icon.pngbin0 -> 1165 bytes
-rw-r--r--src/imports/controls/designer/images/checkbox-icon16.pngbin0 -> 1131 bytes
-rw-r--r--src/imports/controls/designer/images/checkbox-icon16@2x.pngbin0 -> 1219 bytes
-rw-r--r--src/imports/controls/designer/images/checkbox-icon@2x.pngbin0 -> 1275 bytes
-rw-r--r--src/imports/controls/designer/images/combobox-icon.pngbin0 -> 1116 bytes
-rw-r--r--src/imports/controls/designer/images/combobox-icon16.pngbin0 -> 1125 bytes
-rw-r--r--src/imports/controls/designer/images/combobox-icon16@2x.pngbin0 -> 1148 bytes
-rw-r--r--src/imports/controls/designer/images/combobox-icon@2x.pngbin0 -> 1156 bytes
-rw-r--r--src/imports/controls/designer/images/dial-icon.pngbin0 -> 1352 bytes
-rw-r--r--src/imports/controls/designer/images/dial-icon16.pngbin0 -> 1249 bytes
-rw-r--r--src/imports/controls/designer/images/dial-icon16@2x.pngbin0 -> 1548 bytes
-rw-r--r--src/imports/controls/designer/images/dial-icon@2x.pngbin0 -> 1926 bytes
-rw-r--r--src/imports/controls/designer/images/frame-icon.pngbin0 -> 1070 bytes
-rw-r--r--src/imports/controls/designer/images/frame-icon16.pngbin0 -> 1060 bytes
-rw-r--r--src/imports/controls/designer/images/frame-icon16@2x.pngbin0 -> 1078 bytes
-rw-r--r--src/imports/controls/designer/images/frame-icon@2x.pngbin0 -> 1098 bytes
-rw-r--r--src/imports/controls/designer/images/groupbox-icon.pngbin0 -> 1073 bytes
-rw-r--r--src/imports/controls/designer/images/groupbox-icon16.pngbin0 -> 1063 bytes
-rw-r--r--src/imports/controls/designer/images/groupbox-icon16@2x.pngbin0 -> 1082 bytes
-rw-r--r--src/imports/controls/designer/images/groupbox-icon@2x.pngbin0 -> 1106 bytes
-rw-r--r--src/imports/controls/designer/images/itemdelegate-icon.pngbin0 -> 1065 bytes
-rw-r--r--src/imports/controls/designer/images/itemdelegate-icon16.pngbin0 -> 1056 bytes
-rw-r--r--src/imports/controls/designer/images/itemdelegate-icon16@2x.pngbin0 -> 1077 bytes
-rw-r--r--src/imports/controls/designer/images/itemdelegate-icon@2x.pngbin0 -> 1102 bytes
-rw-r--r--src/imports/controls/designer/images/label-icon.pngbin0 -> 1148 bytes
-rw-r--r--src/imports/controls/designer/images/label-icon16.pngbin0 -> 1136 bytes
-rw-r--r--src/imports/controls/designer/images/label-icon16@2x.pngbin0 -> 1203 bytes
-rw-r--r--src/imports/controls/designer/images/label-icon@2x.pngbin0 -> 1247 bytes
-rw-r--r--src/imports/controls/designer/images/pageindicator-icon.pngbin0 -> 1131 bytes
-rw-r--r--src/imports/controls/designer/images/pageindicator-icon16.pngbin0 -> 1114 bytes
-rw-r--r--src/imports/controls/designer/images/pageindicator-icon16@2x.pngbin0 -> 1159 bytes
-rw-r--r--src/imports/controls/designer/images/pageindicator-icon@2x.pngbin0 -> 1197 bytes
-rw-r--r--src/imports/controls/designer/images/pane-icon.pngbin0 -> 1042 bytes
-rw-r--r--src/imports/controls/designer/images/pane-icon16.pngbin0 -> 1032 bytes
-rw-r--r--src/imports/controls/designer/images/pane-icon16@2x.pngbin0 -> 1052 bytes
-rw-r--r--src/imports/controls/designer/images/pane-icon@2x.pngbin0 -> 1074 bytes
-rw-r--r--src/imports/controls/designer/images/placeholder-icon.pngbin0 -> 1041 bytes
-rw-r--r--src/imports/controls/designer/images/placeholder-icon16.pngbin0 -> 1030 bytes
-rw-r--r--src/imports/controls/designer/images/placeholder-icon16@2x.pngbin0 -> 1058 bytes
-rw-r--r--src/imports/controls/designer/images/placeholder-icon@2x.pngbin0 -> 1078 bytes
-rw-r--r--src/imports/controls/designer/images/progressbar-icon.pngbin0 -> 1040 bytes
-rw-r--r--src/imports/controls/designer/images/progressbar-icon16.pngbin0 -> 1031 bytes
-rw-r--r--src/imports/controls/designer/images/progressbar-icon16@2x.pngbin0 -> 1060 bytes
-rw-r--r--src/imports/controls/designer/images/progressbar-icon@2x.pngbin0 -> 1079 bytes
-rw-r--r--src/imports/controls/designer/images/radiobutton-icon.pngbin0 -> 1401 bytes
-rw-r--r--src/imports/controls/designer/images/radiobutton-icon16.pngbin0 -> 1228 bytes
-rw-r--r--src/imports/controls/designer/images/radiobutton-icon16@2x.pngbin0 -> 1578 bytes
-rw-r--r--src/imports/controls/designer/images/radiobutton-icon@2x.pngbin0 -> 1858 bytes
-rw-r--r--src/imports/controls/designer/images/slider-icon.pngbin0 -> 1184 bytes
-rw-r--r--src/imports/controls/designer/images/slider-icon16.pngbin0 -> 1124 bytes
-rw-r--r--src/imports/controls/designer/images/slider-icon16@2x.pngbin0 -> 1358 bytes
-rw-r--r--src/imports/controls/designer/images/slider-icon@2x.pngbin0 -> 1540 bytes
-rw-r--r--src/imports/controls/designer/images/spinbox-icon.pngbin0 -> 1105 bytes
-rw-r--r--src/imports/controls/designer/images/spinbox-icon16.pngbin0 -> 1075 bytes
-rw-r--r--src/imports/controls/designer/images/spinbox-icon16@2x.pngbin0 -> 1115 bytes
-rw-r--r--src/imports/controls/designer/images/spinbox-icon@2x.pngbin0 -> 1165 bytes
-rw-r--r--src/imports/controls/designer/images/switch-icon.pngbin0 -> 1197 bytes
-rw-r--r--src/imports/controls/designer/images/switch-icon16.pngbin0 -> 1109 bytes
-rw-r--r--src/imports/controls/designer/images/switch-icon16@2x.pngbin0 -> 1254 bytes
-rw-r--r--src/imports/controls/designer/images/switch-icon@2x.pngbin0 -> 1407 bytes
-rw-r--r--src/imports/controls/designer/images/textarea-icon.pngbin0 -> 1107 bytes
-rw-r--r--src/imports/controls/designer/images/textarea-icon16.pngbin0 -> 1106 bytes
-rw-r--r--src/imports/controls/designer/images/textarea-icon16@2x.pngbin0 -> 1119 bytes
-rw-r--r--src/imports/controls/designer/images/textarea-icon@2x.pngbin0 -> 1147 bytes
-rw-r--r--src/imports/controls/designer/images/textfield-icon.pngbin0 -> 1101 bytes
-rw-r--r--src/imports/controls/designer/images/textfield-icon16.pngbin0 -> 1084 bytes
-rw-r--r--src/imports/controls/designer/images/textfield-icon16@2x.pngbin0 -> 1099 bytes
-rw-r--r--src/imports/controls/designer/images/textfield-icon@2x.pngbin0 -> 1140 bytes
-rw-r--r--src/imports/controls/designer/images/todo.pngbin169 -> 0 bytes
-rw-r--r--src/imports/controls/designer/images/todo16.pngbin160 -> 0 bytes
-rw-r--r--src/imports/controls/designer/images/toolbar-icon.pngbin0 -> 1058 bytes
-rw-r--r--src/imports/controls/designer/images/toolbar-icon16.pngbin0 -> 1047 bytes
-rw-r--r--src/imports/controls/designer/images/toolbar-icon16@2x.pngbin0 -> 1069 bytes
-rw-r--r--src/imports/controls/designer/images/toolbar-icon@2x.pngbin0 -> 1093 bytes
-rw-r--r--src/imports/controls/designer/images/toolbutton-icon.pngbin0 -> 1074 bytes
-rw-r--r--src/imports/controls/designer/images/toolbutton-icon16.pngbin0 -> 1051 bytes
-rw-r--r--src/imports/controls/designer/images/toolbutton-icon16@2x.pngbin0 -> 1081 bytes
-rw-r--r--src/imports/controls/designer/images/toolbutton-icon@2x.pngbin0 -> 1114 bytes
-rw-r--r--src/imports/controls/designer/images/tumbler-icon.pngbin0 -> 1115 bytes
-rw-r--r--src/imports/controls/designer/images/tumbler-icon16.pngbin0 -> 1095 bytes
-rw-r--r--src/imports/controls/designer/images/tumbler-icon16@2x.pngbin0 -> 1127 bytes
-rw-r--r--src/imports/controls/designer/images/tumbler-icon@2x.pngbin0 -> 1153 bytes
-rw-r--r--src/imports/controls/designer/qtlabscontrols.metainfo84
-rw-r--r--src/imports/controls/material/Button.qml8
-rw-r--r--src/imports/controls/material/CheckBox.qml2
-rw-r--r--src/imports/controls/material/ComboBox.qml10
-rw-r--r--src/imports/controls/material/RadioButton.qml2
-rw-r--r--src/imports/controls/material/SliderHandle.qml10
-rw-r--r--src/imports/controls/material/Switch.qml2
-rw-r--r--src/imports/controls/material/qquickmaterialprogressstrip.cpp1
-rw-r--r--src/imports/controls/material/qquickmaterialstyle.cpp4
-rw-r--r--src/templates/qquickcontrol.cpp13
-rw-r--r--src/templates/qquickmenu.cpp7
-rw-r--r--src/templates/qquickmenu_p.h5
-rw-r--r--src/templates/qquickpopup.cpp21
-rw-r--r--src/templates/qquickpopup_p.h8
-rw-r--r--src/templates/qquickpopup_p_p.h4
-rw-r--r--src/templates/qquickrangeslider.cpp18
-rw-r--r--src/templates/qquickrangeslider_p.h1
-rw-r--r--tests/auto/accessibility/accessibility.pro2
-rw-r--r--tests/auto/accessibility/data/menu.qml12
-rw-r--r--tests/auto/accessibility/data/popup.qml12
-rw-r--r--tests/auto/accessibility/tst_accessibility.cpp20
-rw-r--r--tests/auto/calendar/data/tst_calendarmodel.qml115
-rw-r--r--tests/auto/calendar/data/tst_monthgrid.qml80
-rw-r--r--tests/auto/controls/data/tst_popup.qml29
-rw-r--r--tests/auto/controls/data/tst_rangeslider.qml34
122 files changed, 456 insertions, 99 deletions
diff --git a/src/imports/calendar/qquickcalendar.cpp b/src/imports/calendar/qquickcalendar.cpp
index 5a14bb27..b64759f2 100644
--- a/src/imports/calendar/qquickcalendar.cpp
+++ b/src/imports/calendar/qquickcalendar.cpp
@@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
with the JavaScript Date type, that is used by the QML language. This
means that \c Date::getMonth() can be assigned to MonthGrid::month and
WeekNumberColumn::month as is. When dealing with dealing with month numbers
- diretly, it is highly recommended to use the following enumeration values
+ directly, it is highly recommended to use the following enumeration values
to avoid confusion.
\value Calendar.January January (0)
diff --git a/src/imports/calendar/qquickcalendarmodel.cpp b/src/imports/calendar/qquickcalendarmodel.cpp
index 6b59d45a..9d214450 100644
--- a/src/imports/calendar/qquickcalendarmodel.cpp
+++ b/src/imports/calendar/qquickcalendarmodel.cpp
@@ -60,9 +60,28 @@ QT_BEGIN_NAMESPACE
\row \li \b model.year : int \li The number of the year
\endtable
+ The Qt Labs Calendar module uses 0-based month numbers to be consistent
+ with the JavaScript Date type, that is used by the QML language. This
+ means that \c Date::getMonth() can be passed to the methods as is. When
+ dealing with dealing with month numbers directly, it is highly recommended
+ to use the following enumeration values to avoid confusion.
+
+ \value Calendar.January January (0)
+ \value Calendar.February February (1)
+ \value Calendar.March March (2)
+ \value Calendar.April April (3)
+ \value Calendar.May May (4)
+ \value Calendar.June June (5)
+ \value Calendar.July July (6)
+ \value Calendar.August August (7)
+ \value Calendar.September September (8)
+ \value Calendar.October October (9)
+ \value Calendar.November November (10)
+ \value Calendar.December December (11)
+
\labs
- \sa MonthGrid
+ \sa MonthGrid, Calendar
*/
class QQuickCalendarModelPrivate : public QAbstractItemModelPrivate
@@ -87,9 +106,16 @@ public:
int QQuickCalendarModelPrivate::getCount(const QDate& from, const QDate &to)
{
+ if (!from.isValid() || !to.isValid())
+ return 0;
+
QDate f(from.year(), from.month(), 1);
QDate t(to.year(), to.month(), to.daysInMonth());
- QDate r = QDate(1, 1, 1).addDays(f.daysTo(t));
+ int days = f.daysTo(t);
+ if (days < 0)
+ return 0;
+
+ QDate r = QDate(1, 1, 1).addDays(days);
int years = r.year() - 1;
int months = r.month() - 1;
return 12 * years + months + (r.day() / t.day());
@@ -169,7 +195,7 @@ void QQuickCalendarModel::setTo(const QDate &to)
int QQuickCalendarModel::monthAt(int index) const
{
Q_D(const QQuickCalendarModel);
- return d->from.addMonths(index).month();
+ return d->from.addMonths(index).month() - 1;
}
/*!
@@ -190,7 +216,8 @@ int QQuickCalendarModel::yearAt(int index) const
*/
int QQuickCalendarModel::indexOf(const QDate &date) const
{
- return indexOf(date.year(), date.month());
+ Q_D(const QQuickCalendarModel);
+ return d->getCount(d->from, date) - 1;
}
/*!
@@ -200,8 +227,7 @@ int QQuickCalendarModel::indexOf(const QDate &date) const
*/
int QQuickCalendarModel::indexOf(int year, int month) const
{
- Q_D(const QQuickCalendarModel);
- return d->getCount(d->from, QDate(year, month, 1)) - 1;
+ return indexOf(QDate(year, month + 1, 1));
}
QVariant QQuickCalendarModel::data(const QModelIndex &index, int role) const
diff --git a/src/imports/calendar/qquickmonthgrid.cpp b/src/imports/calendar/qquickmonthgrid.cpp
index 8fe9ad63..c6ad3d53 100644
--- a/src/imports/calendar/qquickmonthgrid.cpp
+++ b/src/imports/calendar/qquickmonthgrid.cpp
@@ -188,7 +188,7 @@ QQuickMonthGrid::QQuickMonthGrid(QQuickItem *parent) :
The Qt Labs Calendar module uses 0-based month numbers to be consistent
with the JavaScript Date type, that is used by the QML language. This
means that \c Date::getMonth() can be assigned to this property as is.
- When dealing with dealing with month numbers diretly, it is highly
+ When dealing with dealing with month numbers directly, it is highly
recommended to use the following enumeration values to avoid confusion.
\value Calendar.January January (0)
diff --git a/src/imports/calendar/qquickweeknumbercolumn.cpp b/src/imports/calendar/qquickweeknumbercolumn.cpp
index 031b0555..a128b500 100644
--- a/src/imports/calendar/qquickweeknumbercolumn.cpp
+++ b/src/imports/calendar/qquickweeknumbercolumn.cpp
@@ -116,7 +116,7 @@ QQuickWeekNumberColumn::QQuickWeekNumberColumn(QQuickItem *parent) :
The Qt Labs Calendar module uses 0-based month numbers to be consistent
with the JavaScript Date type, that is used by the QML language. This
means that \c Date::getMonth() can be assigned to this property as is.
- When dealing with dealing with month numbers diretly, it is highly
+ When dealing with dealing with month numbers directly, it is highly
recommended to use the following enumeration values to avoid confusion.
\value Calendar.January January (0)
diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml
index 30f45af3..6e3dc91b 100644
--- a/src/imports/controls/ComboBox.qml
+++ b/src/imports/controls/ComboBox.qml
@@ -101,7 +101,7 @@ T.ComboBox {
popup: T.Popup {
y: control.height - 1
implicitWidth: control.width
- implicitHeight: Math.min(396, listview.contentHeight)
+ implicitHeight: listview.contentHeight
topMargin: 6
bottomMargin: 6
diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro
index 0ccdf5a0..9a3f9628 100644
--- a/src/imports/controls/controls.pro
+++ b/src/imports/controls/controls.pro
@@ -25,7 +25,7 @@ RESOURCES += \
$$PWD/qtlabscontrolsplugin.qrc
include(controls.pri)
-include(designer/designer.pri)
+!ios: include(designer/designer.pri)
qtquickcompiler {
qmlfiles.prefix = /qt-project.org/imports/Qt/labs/controls
diff --git a/src/imports/controls/designer/designer.pri b/src/imports/controls/designer/designer.pri
index 601fc4b4..1589723c 100644
--- a/src/imports/controls/designer/designer.pri
+++ b/src/imports/controls/designer/designer.pri
@@ -29,5 +29,4 @@ QML_FILES += \
$$PWD/TumblerSpecifics.qml
QML_FILES += \
- $$PWD/images/todo.png \
- $$PWD/images/todo16.png
+ $$PWD/images/*.png
diff --git a/src/imports/controls/designer/images/busyindicator-icon.png b/src/imports/controls/designer/images/busyindicator-icon.png
new file mode 100644
index 00000000..307dccf9
--- /dev/null
+++ b/src/imports/controls/designer/images/busyindicator-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/busyindicator-icon16.png b/src/imports/controls/designer/images/busyindicator-icon16.png
new file mode 100644
index 00000000..1258b92b
--- /dev/null
+++ b/src/imports/controls/designer/images/busyindicator-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/busyindicator-icon16@2x.png b/src/imports/controls/designer/images/busyindicator-icon16@2x.png
new file mode 100644
index 00000000..5e5bd2ff
--- /dev/null
+++ b/src/imports/controls/designer/images/busyindicator-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/busyindicator-icon@2x.png b/src/imports/controls/designer/images/busyindicator-icon@2x.png
new file mode 100644
index 00000000..04c0e3c8
--- /dev/null
+++ b/src/imports/controls/designer/images/busyindicator-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/button-icon.png b/src/imports/controls/designer/images/button-icon.png
new file mode 100644
index 00000000..37ace9a6
--- /dev/null
+++ b/src/imports/controls/designer/images/button-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/button-icon16.png b/src/imports/controls/designer/images/button-icon16.png
new file mode 100644
index 00000000..c8a1f80c
--- /dev/null
+++ b/src/imports/controls/designer/images/button-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/button-icon16@2x.png b/src/imports/controls/designer/images/button-icon16@2x.png
new file mode 100644
index 00000000..8883ae0b
--- /dev/null
+++ b/src/imports/controls/designer/images/button-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/button-icon@2x.png b/src/imports/controls/designer/images/button-icon@2x.png
new file mode 100644
index 00000000..0070c51b
--- /dev/null
+++ b/src/imports/controls/designer/images/button-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/checkbox-icon.png b/src/imports/controls/designer/images/checkbox-icon.png
new file mode 100644
index 00000000..466af6f3
--- /dev/null
+++ b/src/imports/controls/designer/images/checkbox-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/checkbox-icon16.png b/src/imports/controls/designer/images/checkbox-icon16.png
new file mode 100644
index 00000000..45f92ee4
--- /dev/null
+++ b/src/imports/controls/designer/images/checkbox-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/checkbox-icon16@2x.png b/src/imports/controls/designer/images/checkbox-icon16@2x.png
new file mode 100644
index 00000000..4e78e7ba
--- /dev/null
+++ b/src/imports/controls/designer/images/checkbox-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/checkbox-icon@2x.png b/src/imports/controls/designer/images/checkbox-icon@2x.png
new file mode 100644
index 00000000..750161dd
--- /dev/null
+++ b/src/imports/controls/designer/images/checkbox-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/combobox-icon.png b/src/imports/controls/designer/images/combobox-icon.png
new file mode 100644
index 00000000..9f485c77
--- /dev/null
+++ b/src/imports/controls/designer/images/combobox-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/combobox-icon16.png b/src/imports/controls/designer/images/combobox-icon16.png
new file mode 100644
index 00000000..f2d1ec7e
--- /dev/null
+++ b/src/imports/controls/designer/images/combobox-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/combobox-icon16@2x.png b/src/imports/controls/designer/images/combobox-icon16@2x.png
new file mode 100644
index 00000000..c24f275d
--- /dev/null
+++ b/src/imports/controls/designer/images/combobox-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/combobox-icon@2x.png b/src/imports/controls/designer/images/combobox-icon@2x.png
new file mode 100644
index 00000000..8df1fd41
--- /dev/null
+++ b/src/imports/controls/designer/images/combobox-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/dial-icon.png b/src/imports/controls/designer/images/dial-icon.png
new file mode 100644
index 00000000..8989c27e
--- /dev/null
+++ b/src/imports/controls/designer/images/dial-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/dial-icon16.png b/src/imports/controls/designer/images/dial-icon16.png
new file mode 100644
index 00000000..bfbe9d3b
--- /dev/null
+++ b/src/imports/controls/designer/images/dial-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/dial-icon16@2x.png b/src/imports/controls/designer/images/dial-icon16@2x.png
new file mode 100644
index 00000000..d26fddcf
--- /dev/null
+++ b/src/imports/controls/designer/images/dial-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/dial-icon@2x.png b/src/imports/controls/designer/images/dial-icon@2x.png
new file mode 100644
index 00000000..8030a0cf
--- /dev/null
+++ b/src/imports/controls/designer/images/dial-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/frame-icon.png b/src/imports/controls/designer/images/frame-icon.png
new file mode 100644
index 00000000..b584d3ed
--- /dev/null
+++ b/src/imports/controls/designer/images/frame-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/frame-icon16.png b/src/imports/controls/designer/images/frame-icon16.png
new file mode 100644
index 00000000..65b033d8
--- /dev/null
+++ b/src/imports/controls/designer/images/frame-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/frame-icon16@2x.png b/src/imports/controls/designer/images/frame-icon16@2x.png
new file mode 100644
index 00000000..7076acd0
--- /dev/null
+++ b/src/imports/controls/designer/images/frame-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/frame-icon@2x.png b/src/imports/controls/designer/images/frame-icon@2x.png
new file mode 100644
index 00000000..70e72599
--- /dev/null
+++ b/src/imports/controls/designer/images/frame-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/groupbox-icon.png b/src/imports/controls/designer/images/groupbox-icon.png
new file mode 100644
index 00000000..5525d96c
--- /dev/null
+++ b/src/imports/controls/designer/images/groupbox-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/groupbox-icon16.png b/src/imports/controls/designer/images/groupbox-icon16.png
new file mode 100644
index 00000000..3d228fc1
--- /dev/null
+++ b/src/imports/controls/designer/images/groupbox-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/groupbox-icon16@2x.png b/src/imports/controls/designer/images/groupbox-icon16@2x.png
new file mode 100644
index 00000000..c870a24f
--- /dev/null
+++ b/src/imports/controls/designer/images/groupbox-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/groupbox-icon@2x.png b/src/imports/controls/designer/images/groupbox-icon@2x.png
new file mode 100644
index 00000000..cb46a585
--- /dev/null
+++ b/src/imports/controls/designer/images/groupbox-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/itemdelegate-icon.png b/src/imports/controls/designer/images/itemdelegate-icon.png
new file mode 100644
index 00000000..d296eed1
--- /dev/null
+++ b/src/imports/controls/designer/images/itemdelegate-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/itemdelegate-icon16.png b/src/imports/controls/designer/images/itemdelegate-icon16.png
new file mode 100644
index 00000000..bf5727fb
--- /dev/null
+++ b/src/imports/controls/designer/images/itemdelegate-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/itemdelegate-icon16@2x.png b/src/imports/controls/designer/images/itemdelegate-icon16@2x.png
new file mode 100644
index 00000000..e7e65326
--- /dev/null
+++ b/src/imports/controls/designer/images/itemdelegate-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/itemdelegate-icon@2x.png b/src/imports/controls/designer/images/itemdelegate-icon@2x.png
new file mode 100644
index 00000000..1cbe9f79
--- /dev/null
+++ b/src/imports/controls/designer/images/itemdelegate-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/label-icon.png b/src/imports/controls/designer/images/label-icon.png
new file mode 100644
index 00000000..e551d62b
--- /dev/null
+++ b/src/imports/controls/designer/images/label-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/label-icon16.png b/src/imports/controls/designer/images/label-icon16.png
new file mode 100644
index 00000000..02221a83
--- /dev/null
+++ b/src/imports/controls/designer/images/label-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/label-icon16@2x.png b/src/imports/controls/designer/images/label-icon16@2x.png
new file mode 100644
index 00000000..08b71953
--- /dev/null
+++ b/src/imports/controls/designer/images/label-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/label-icon@2x.png b/src/imports/controls/designer/images/label-icon@2x.png
new file mode 100644
index 00000000..5b185656
--- /dev/null
+++ b/src/imports/controls/designer/images/label-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pageindicator-icon.png b/src/imports/controls/designer/images/pageindicator-icon.png
new file mode 100644
index 00000000..8b190422
--- /dev/null
+++ b/src/imports/controls/designer/images/pageindicator-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pageindicator-icon16.png b/src/imports/controls/designer/images/pageindicator-icon16.png
new file mode 100644
index 00000000..ea6cfaad
--- /dev/null
+++ b/src/imports/controls/designer/images/pageindicator-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pageindicator-icon16@2x.png b/src/imports/controls/designer/images/pageindicator-icon16@2x.png
new file mode 100644
index 00000000..bb52d401
--- /dev/null
+++ b/src/imports/controls/designer/images/pageindicator-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pageindicator-icon@2x.png b/src/imports/controls/designer/images/pageindicator-icon@2x.png
new file mode 100644
index 00000000..98cc8ea2
--- /dev/null
+++ b/src/imports/controls/designer/images/pageindicator-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pane-icon.png b/src/imports/controls/designer/images/pane-icon.png
new file mode 100644
index 00000000..78ba7dc8
--- /dev/null
+++ b/src/imports/controls/designer/images/pane-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pane-icon16.png b/src/imports/controls/designer/images/pane-icon16.png
new file mode 100644
index 00000000..aa8eaa35
--- /dev/null
+++ b/src/imports/controls/designer/images/pane-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pane-icon16@2x.png b/src/imports/controls/designer/images/pane-icon16@2x.png
new file mode 100644
index 00000000..dfacdcf7
--- /dev/null
+++ b/src/imports/controls/designer/images/pane-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/pane-icon@2x.png b/src/imports/controls/designer/images/pane-icon@2x.png
new file mode 100644
index 00000000..649314fd
--- /dev/null
+++ b/src/imports/controls/designer/images/pane-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/placeholder-icon.png b/src/imports/controls/designer/images/placeholder-icon.png
new file mode 100644
index 00000000..65beb4ac
--- /dev/null
+++ b/src/imports/controls/designer/images/placeholder-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/placeholder-icon16.png b/src/imports/controls/designer/images/placeholder-icon16.png
new file mode 100644
index 00000000..a3e2f2f7
--- /dev/null
+++ b/src/imports/controls/designer/images/placeholder-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/placeholder-icon16@2x.png b/src/imports/controls/designer/images/placeholder-icon16@2x.png
new file mode 100644
index 00000000..a8164015
--- /dev/null
+++ b/src/imports/controls/designer/images/placeholder-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/placeholder-icon@2x.png b/src/imports/controls/designer/images/placeholder-icon@2x.png
new file mode 100644
index 00000000..f17fff24
--- /dev/null
+++ b/src/imports/controls/designer/images/placeholder-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/progressbar-icon.png b/src/imports/controls/designer/images/progressbar-icon.png
new file mode 100644
index 00000000..8a283960
--- /dev/null
+++ b/src/imports/controls/designer/images/progressbar-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/progressbar-icon16.png b/src/imports/controls/designer/images/progressbar-icon16.png
new file mode 100644
index 00000000..91010d85
--- /dev/null
+++ b/src/imports/controls/designer/images/progressbar-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/progressbar-icon16@2x.png b/src/imports/controls/designer/images/progressbar-icon16@2x.png
new file mode 100644
index 00000000..93d98b72
--- /dev/null
+++ b/src/imports/controls/designer/images/progressbar-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/progressbar-icon@2x.png b/src/imports/controls/designer/images/progressbar-icon@2x.png
new file mode 100644
index 00000000..5dc4130c
--- /dev/null
+++ b/src/imports/controls/designer/images/progressbar-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/radiobutton-icon.png b/src/imports/controls/designer/images/radiobutton-icon.png
new file mode 100644
index 00000000..c19d6984
--- /dev/null
+++ b/src/imports/controls/designer/images/radiobutton-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/radiobutton-icon16.png b/src/imports/controls/designer/images/radiobutton-icon16.png
new file mode 100644
index 00000000..cbd49ee7
--- /dev/null
+++ b/src/imports/controls/designer/images/radiobutton-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/radiobutton-icon16@2x.png b/src/imports/controls/designer/images/radiobutton-icon16@2x.png
new file mode 100644
index 00000000..07396b0d
--- /dev/null
+++ b/src/imports/controls/designer/images/radiobutton-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/radiobutton-icon@2x.png b/src/imports/controls/designer/images/radiobutton-icon@2x.png
new file mode 100644
index 00000000..8e576eb7
--- /dev/null
+++ b/src/imports/controls/designer/images/radiobutton-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/slider-icon.png b/src/imports/controls/designer/images/slider-icon.png
new file mode 100644
index 00000000..c4638b43
--- /dev/null
+++ b/src/imports/controls/designer/images/slider-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/slider-icon16.png b/src/imports/controls/designer/images/slider-icon16.png
new file mode 100644
index 00000000..caab3992
--- /dev/null
+++ b/src/imports/controls/designer/images/slider-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/slider-icon16@2x.png b/src/imports/controls/designer/images/slider-icon16@2x.png
new file mode 100644
index 00000000..20faceb2
--- /dev/null
+++ b/src/imports/controls/designer/images/slider-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/slider-icon@2x.png b/src/imports/controls/designer/images/slider-icon@2x.png
new file mode 100644
index 00000000..d4fdcd88
--- /dev/null
+++ b/src/imports/controls/designer/images/slider-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/spinbox-icon.png b/src/imports/controls/designer/images/spinbox-icon.png
new file mode 100644
index 00000000..8135a173
--- /dev/null
+++ b/src/imports/controls/designer/images/spinbox-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/spinbox-icon16.png b/src/imports/controls/designer/images/spinbox-icon16.png
new file mode 100644
index 00000000..774cdbf5
--- /dev/null
+++ b/src/imports/controls/designer/images/spinbox-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/spinbox-icon16@2x.png b/src/imports/controls/designer/images/spinbox-icon16@2x.png
new file mode 100644
index 00000000..00bc8adc
--- /dev/null
+++ b/src/imports/controls/designer/images/spinbox-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/spinbox-icon@2x.png b/src/imports/controls/designer/images/spinbox-icon@2x.png
new file mode 100644
index 00000000..83fcc689
--- /dev/null
+++ b/src/imports/controls/designer/images/spinbox-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/switch-icon.png b/src/imports/controls/designer/images/switch-icon.png
new file mode 100644
index 00000000..64c9f80f
--- /dev/null
+++ b/src/imports/controls/designer/images/switch-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/switch-icon16.png b/src/imports/controls/designer/images/switch-icon16.png
new file mode 100644
index 00000000..893a0d9c
--- /dev/null
+++ b/src/imports/controls/designer/images/switch-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/switch-icon16@2x.png b/src/imports/controls/designer/images/switch-icon16@2x.png
new file mode 100644
index 00000000..09333db6
--- /dev/null
+++ b/src/imports/controls/designer/images/switch-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/switch-icon@2x.png b/src/imports/controls/designer/images/switch-icon@2x.png
new file mode 100644
index 00000000..2b5fa0da
--- /dev/null
+++ b/src/imports/controls/designer/images/switch-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textarea-icon.png b/src/imports/controls/designer/images/textarea-icon.png
new file mode 100644
index 00000000..61b7387c
--- /dev/null
+++ b/src/imports/controls/designer/images/textarea-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textarea-icon16.png b/src/imports/controls/designer/images/textarea-icon16.png
new file mode 100644
index 00000000..8f23812e
--- /dev/null
+++ b/src/imports/controls/designer/images/textarea-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textarea-icon16@2x.png b/src/imports/controls/designer/images/textarea-icon16@2x.png
new file mode 100644
index 00000000..4b81c633
--- /dev/null
+++ b/src/imports/controls/designer/images/textarea-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textarea-icon@2x.png b/src/imports/controls/designer/images/textarea-icon@2x.png
new file mode 100644
index 00000000..3b64908a
--- /dev/null
+++ b/src/imports/controls/designer/images/textarea-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textfield-icon.png b/src/imports/controls/designer/images/textfield-icon.png
new file mode 100644
index 00000000..c08424bf
--- /dev/null
+++ b/src/imports/controls/designer/images/textfield-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textfield-icon16.png b/src/imports/controls/designer/images/textfield-icon16.png
new file mode 100644
index 00000000..514ae04e
--- /dev/null
+++ b/src/imports/controls/designer/images/textfield-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textfield-icon16@2x.png b/src/imports/controls/designer/images/textfield-icon16@2x.png
new file mode 100644
index 00000000..d93cf59b
--- /dev/null
+++ b/src/imports/controls/designer/images/textfield-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/textfield-icon@2x.png b/src/imports/controls/designer/images/textfield-icon@2x.png
new file mode 100644
index 00000000..bbb5ca9c
--- /dev/null
+++ b/src/imports/controls/designer/images/textfield-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/todo.png b/src/imports/controls/designer/images/todo.png
deleted file mode 100644
index 9a8a586f..00000000
--- a/src/imports/controls/designer/images/todo.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/designer/images/todo16.png b/src/imports/controls/designer/images/todo16.png
deleted file mode 100644
index 0717d1eb..00000000
--- a/src/imports/controls/designer/images/todo16.png
+++ /dev/null
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbar-icon.png b/src/imports/controls/designer/images/toolbar-icon.png
new file mode 100644
index 00000000..c65e7038
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbar-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbar-icon16.png b/src/imports/controls/designer/images/toolbar-icon16.png
new file mode 100644
index 00000000..ee2d3c9c
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbar-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbar-icon16@2x.png b/src/imports/controls/designer/images/toolbar-icon16@2x.png
new file mode 100644
index 00000000..4ae0f41a
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbar-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbar-icon@2x.png b/src/imports/controls/designer/images/toolbar-icon@2x.png
new file mode 100644
index 00000000..a41cb0bd
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbar-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbutton-icon.png b/src/imports/controls/designer/images/toolbutton-icon.png
new file mode 100644
index 00000000..8a3cea5e
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbutton-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbutton-icon16.png b/src/imports/controls/designer/images/toolbutton-icon16.png
new file mode 100644
index 00000000..49c9d956
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbutton-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbutton-icon16@2x.png b/src/imports/controls/designer/images/toolbutton-icon16@2x.png
new file mode 100644
index 00000000..4d9b2684
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbutton-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/toolbutton-icon@2x.png b/src/imports/controls/designer/images/toolbutton-icon@2x.png
new file mode 100644
index 00000000..aff35c52
--- /dev/null
+++ b/src/imports/controls/designer/images/toolbutton-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/tumbler-icon.png b/src/imports/controls/designer/images/tumbler-icon.png
new file mode 100644
index 00000000..59e827b8
--- /dev/null
+++ b/src/imports/controls/designer/images/tumbler-icon.png
Binary files differ
diff --git a/src/imports/controls/designer/images/tumbler-icon16.png b/src/imports/controls/designer/images/tumbler-icon16.png
new file mode 100644
index 00000000..7c2b3a1f
--- /dev/null
+++ b/src/imports/controls/designer/images/tumbler-icon16.png
Binary files differ
diff --git a/src/imports/controls/designer/images/tumbler-icon16@2x.png b/src/imports/controls/designer/images/tumbler-icon16@2x.png
new file mode 100644
index 00000000..21b70156
--- /dev/null
+++ b/src/imports/controls/designer/images/tumbler-icon16@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/images/tumbler-icon@2x.png b/src/imports/controls/designer/images/tumbler-icon@2x.png
new file mode 100644
index 00000000..7a36e8c3
--- /dev/null
+++ b/src/imports/controls/designer/images/tumbler-icon@2x.png
Binary files differ
diff --git a/src/imports/controls/designer/qtlabscontrols.metainfo b/src/imports/controls/designer/qtlabscontrols.metainfo
index 1c005c6f..0564077a 100644
--- a/src/imports/controls/designer/qtlabscontrols.metainfo
+++ b/src/imports/controls/designer/qtlabscontrols.metainfo
@@ -1,12 +1,12 @@
MetaInfo {
Type {
name: "Qt.labs.controls.BusyIndicator"
- icon: "images/todo16.png"
+ icon: "images/busyindicator-icon16.png"
ItemLibraryEntry {
name: "Busy Indicator"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/busyindicator-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
}
@@ -14,12 +14,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Button"
- icon: "images/todo16.png"
+ icon: "images/button-icon16.png"
ItemLibraryEntry {
name: "Button"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/button-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -29,12 +29,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.CheckBox"
- icon: "images/todo16.png"
+ icon: "images/checkbox-icon16.png"
ItemLibraryEntry {
name: "Check Box"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/checkbox-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -44,12 +44,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.ComboBox"
- icon: "images/todo16.png"
+ icon: "images/combobox-icon16.png"
ItemLibraryEntry {
name: "Combo Box"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/combobox-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
}
@@ -57,12 +57,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Dial"
- icon: "images/todo16.png"
+ icon: "images/dial-icon16.png"
ItemLibraryEntry {
name: "Dial"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/dial-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
}
@@ -70,12 +70,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Frame"
- icon: "images/todo16.png"
+ icon: "images/frame-icon16.png"
ItemLibraryEntry {
name: "Frame"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/frame-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -86,12 +86,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.GroupBox"
- icon: "images/todo16.png"
+ icon: "images/groupbox-icon16.png"
ItemLibraryEntry {
name: "Group Box"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/groupbox-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -103,12 +103,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.ItemDelegate"
- icon: "images/todo16.png"
+ icon: "images/itemdelegate-icon16.png"
ItemLibraryEntry {
name: "Item Delegate"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/itemdelegate-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -118,12 +118,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Label"
- icon: "images/todo16.png"
+ icon: "images/label-icon16.png"
ItemLibraryEntry {
name: "Label"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/label-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -133,12 +133,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.PageIndicator"
- icon: "images/todo16.png"
+ icon: "images/pageindicator-icon16.png"
ItemLibraryEntry {
name: "Page Indicator"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/pageindicator-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -148,12 +148,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Pane"
- icon: "images/todo16.png"
+ icon: "images/pane-icon16.png"
ItemLibraryEntry {
name: "Pane"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/pane-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -164,12 +164,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.ProgressBar"
- icon: "images/todo16.png"
+ icon: "images/progressbar-icon16.png"
ItemLibraryEntry {
name: "Progress Bar"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/progressbar-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -179,12 +179,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.RadioButton"
- icon: "images/todo16.png"
+ icon: "images/radiobutton-icon16.png"
ItemLibraryEntry {
name: "Radio Button"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/radiobutton-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -194,12 +194,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Slider"
- icon: "images/todo16.png"
+ icon: "images/slider-icon16.png"
ItemLibraryEntry {
name: "Slider"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/slider-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -209,12 +209,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.SpinBox"
- icon: "images/todo16.png"
+ icon: "images/spinbox-icon16.png"
ItemLibraryEntry {
name: "Spin Box"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/spinbox-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
}
@@ -222,12 +222,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Switch"
- icon: "images/todo16.png"
+ icon: "images/switch-icon16.png"
ItemLibraryEntry {
name: "Switch"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/switch-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -237,12 +237,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.TextArea"
- icon: "images/todo16.png"
+ icon: "images/textarea-icon16.png"
ItemLibraryEntry {
name: "Text Area"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/textarea-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -252,12 +252,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.TextField"
- icon: "images/todo16.png"
+ icon: "images/textfield-icon16.png"
ItemLibraryEntry {
name: "Text Field"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/textfield-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -267,12 +267,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.ToolButton"
- icon: "images/todo16.png"
+ icon: "images/toolbutton-icon16.png"
ItemLibraryEntry {
name: "Tool Button"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/toolbutton-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -282,12 +282,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.ToolBar"
- icon: "images/todo16.png"
+ icon: "images/toolbar-icon16.png"
ItemLibraryEntry {
name: "Tool Bar"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/toolbar-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
@@ -297,12 +297,12 @@ MetaInfo {
Type {
name: "Qt.labs.controls.Tumbler"
- icon: "images/todo16.png"
+ icon: "images/tumbler-icon16.png"
ItemLibraryEntry {
name: "Tumbler"
category: "Qt Labs - Controls"
- libraryIcon: "images/todo.png"
+ libraryIcon: "images/tumbler-icon.png"
version: "1.0"
requiredImport: "Qt.labs.controls"
}
diff --git a/src/imports/controls/material/Button.qml b/src/imports/controls/material/Button.qml
index d0b05b2c..4dc9bfc5 100644
--- a/src/imports/controls/material/Button.qml
+++ b/src/imports/controls/material/Button.qml
@@ -86,6 +86,14 @@ T.Button {
}
}
+ Rectangle {
+ width: parent.width
+ height: parent.height
+ radius: parent.radius
+ visible: control.activeFocus
+ color: control.Material.checkBoxUncheckedRippleColor
+ }
+
layer.enabled: control.enabled
layer.effect: DropShadow {
verticalOffset: 1
diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml
index abaf571d..fd6ef256 100644
--- a/src/imports/controls/material/CheckBox.qml
+++ b/src/imports/controls/material/CheckBox.qml
@@ -86,7 +86,7 @@ T.CheckBox {
height: width
control: control
colored: control.checked
- opacity: control.pressed ? 1 : 0
+ opacity: control.pressed || control.activeFocus ? 1 : 0
}
// TODO: This needs to be transparent
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml
index 5529c546..ef073370 100644
--- a/src/imports/controls/material/ComboBox.qml
+++ b/src/imports/controls/material/ComboBox.qml
@@ -102,6 +102,14 @@ T.ComboBox {
opacity: !control.enabled ? 0.5 : 1.0
source: "qrc:/qt-project.org/imports/Qt/labs/controls/material/images/drop-indicator.png"
}
+
+ Rectangle {
+ width: parent.width
+ height: parent.height
+ radius: parent.radius
+ visible: control.activeFocus
+ color: control.Material.checkBoxUncheckedRippleColor
+ }
}
//! [background]
@@ -109,7 +117,7 @@ T.ComboBox {
popup: T.Popup {
y: control.height
implicitWidth: control.width
- implicitHeight: Math.min(396, listview.contentHeight)
+ implicitHeight: listview.contentHeight
transformOrigin: Item.Top
topMargin: 12
bottomMargin: 12
diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml
index 429e4f80..4c8831a5 100644
--- a/src/imports/controls/material/RadioButton.qml
+++ b/src/imports/controls/material/RadioButton.qml
@@ -71,7 +71,7 @@ T.RadioButton {
height: width
control: control
colored: control.checked
- opacity: control.pressed ? 1 : 0
+ opacity: control.pressed || control.activeFocus ? 1 : 0
}
Rectangle {
diff --git a/src/imports/controls/material/SliderHandle.qml b/src/imports/controls/material/SliderHandle.qml
index dc1a836d..6f54eaf5 100644
--- a/src/imports/controls/material/SliderHandle.qml
+++ b/src/imports/controls/material/SliderHandle.qml
@@ -55,7 +55,7 @@ Item {
height: parent.height
radius: width / 2
color: root.control.Material.accentColor
- scale: root.handlePressed || root.handleHasFocus ? 1.5 : 1
+ scale: root.handlePressed ? 1.5 : 1
Behavior on scale {
NumberAnimation {
@@ -63,4 +63,12 @@ Item {
}
}
}
+
+ Ripple {
+ width: parent.width
+ height: width
+ control: root.control
+ colored: true
+ opacity: root.handleHasFocus && !root.handlePressed ? 1 : 0
+ }
}
diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml
index a38a643c..ca4b1ff6 100644
--- a/src/imports/controls/material/Switch.qml
+++ b/src/imports/controls/material/Switch.qml
@@ -67,7 +67,7 @@ T.Switch {
height: width
control: control
colored: control.checked
- opacity: control.pressed ? 1 : 0
+ opacity: control.pressed || control.activeFocus ? 1 : 0
}
Rectangle {
diff --git a/src/imports/controls/material/qquickmaterialprogressstrip.cpp b/src/imports/controls/material/qquickmaterialprogressstrip.cpp
index a3ff6c9b..34590340 100644
--- a/src/imports/controls/material/qquickmaterialprogressstrip.cpp
+++ b/src/imports/controls/material/qquickmaterialprogressstrip.cpp
@@ -225,6 +225,7 @@ QSGNode *QQuickMaterialProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePa
transformNode->appendChildNode(rectNode);
}
Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType);
+ static_cast<QSGTransformNode *>(transformNode)->setMatrix(QMatrix4x4());
QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(transformNode->firstChild());
Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType);
diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp
index 5100d01e..280acb77 100644
--- a/src/imports/controls/material/qquickmaterialstyle.cpp
+++ b/src/imports/controls/material/qquickmaterialstyle.cpp
@@ -634,7 +634,7 @@ QColor QQuickMaterialStyle::accentColor() const
return QColor::fromRgba(m_accent);
if (m_accent > BlueGrey)
return QColor();
- return colors[m_accent][Shade500];
+ return colors[m_accent][m_theme == Light ? Shade500 : Shade200];
}
QColor QQuickMaterialStyle::backgroundColor() const
@@ -744,7 +744,7 @@ QColor QQuickMaterialStyle::checkBoxCheckedRippleColor() const
{
QColor pressColor = accentColor();
// TODO: find out actual value
- pressColor.setAlpha(30);
+ pressColor.setAlpha(m_theme == Light ? 30 : 50);
return pressColor;
}
diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp
index 9dbe4181..ae6180ad 100644
--- a/src/templates/qquickcontrol.cpp
+++ b/src/templates/qquickcontrol.cpp
@@ -201,10 +201,15 @@ void QQuickControl::accessibilityActiveChanged(bool active)
return;
d->accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(this, true));
- if (d->accessibleAttached)
- d->accessibleAttached->setRole(accessibleRole());
- else
- qWarning() << "QQuickControl: " << this << " QQuickAccessibleAttached object creation failed!";
+
+ // QQuickControl relies on the existence of a QQuickAccessibleAttached object.
+ // However, qmlAttachedPropertiesObject(create=true) creates an instance only
+ // for items that have been created by a QML engine. Therefore we create the
+ // object by hand for items created in C++ (QQuickPopupItem, for instance).
+ if (!d->accessibleAttached)
+ d->accessibleAttached = new QQuickAccessibleAttached(this);
+
+ d->accessibleAttached->setRole(accessibleRole());
}
#endif
diff --git a/src/templates/qquickmenu.cpp b/src/templates/qquickmenu.cpp
index 2a45b6df..13f90546 100644
--- a/src/templates/qquickmenu.cpp
+++ b/src/templates/qquickmenu.cpp
@@ -518,6 +518,13 @@ bool QQuickMenu::eventFilter(QObject *object, QEvent *event)
return QQuickPopup::eventFilter(object, event);
}
+#ifndef QT_NO_ACCESSIBILITY
+QAccessible::Role QQuickMenu::accessibleRole() const
+{
+ return QAccessible::PopupMenu;
+}
+#endif // QT_NO_ACCESSIBILITY
+
QT_END_NAMESPACE
#include "moc_qquickmenu_p.cpp"
diff --git a/src/templates/qquickmenu_p.h b/src/templates/qquickmenu_p.h
index ec417d16..9ed3f45c 100644
--- a/src/templates/qquickmenu_p.h
+++ b/src/templates/qquickmenu_p.h
@@ -89,6 +89,11 @@ protected:
Q_SIGNALS:
void titleChanged();
+protected:
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessible::Role accessibleRole() const override;
+#endif // QT_NO_ACCESSIBILITY
+
private:
Q_DISABLE_COPY(QQuickMenu)
Q_DECLARE_PRIVATE(QQuickMenu)
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index 4b953fc6..8e751a39 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -105,6 +105,7 @@ QQuickPopupPrivate::QQuickPopupPrivate()
: QObjectPrivate()
, focus(false)
, modal(false)
+ , complete(false)
, hasTopMargin(false)
, hasLeftMargin(false)
, hasRightMargin(false)
@@ -367,6 +368,14 @@ void QQuickPopupItem::paddingChange(const QMarginsF &newPadding, const QMarginsF
d->popup->paddingChange(newPadding, oldPadding);
}
+#ifndef QT_NO_ACCESSIBILITY
+QAccessible::Role QQuickPopupItem::accessibleRole() const
+{
+ Q_D(const QQuickPopupItem);
+ return d->popup->accessibleRole();
+}
+#endif // QT_NO_ACCESSIBILITY
+
QQuickPopupPositioner::QQuickPopupPositioner(QQuickPopupPrivate *popup) :
m_x(0),
m_y(0),
@@ -473,6 +482,7 @@ void QQuickPopupPositioner::repositionPopup()
const qreal iw = m_popup->popupItem->implicitWidth();
const qreal ih = m_popup->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);
@@ -484,6 +494,7 @@ void QQuickPopupPositioner::repositionPopup()
// 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()));
if (flipped.top() >= bounds.top() && flipped.bottom() < bounds.bottom()) {
+ adjusted = true;
rect = flipped;
} else if (ih > 0) {
// neither the flipped around geometry fits inside the window, choose
@@ -498,13 +509,14 @@ void QQuickPopupPositioner::repositionPopup()
rect.setY(secondary.y());
rect.setHeight(secondary.height());
}
+ adjusted = true;
}
}
}
}
m_popup->popupItem->setPosition(rect.topLeft());
- if (ih > 0)
+ if (adjusted && ih > 0)
m_popup->popupItem->setHeight(rect.height());
}
@@ -1636,6 +1648,13 @@ void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &ol
emit availableHeightChanged();
}
+#ifndef QT_NO_ACCESSIBILITY
+QAccessible::Role QQuickPopup::accessibleRole() const
+{
+ return QAccessible::LayeredPane;
+}
+#endif // QT_NO_ACCESSIBILITY
+
QT_END_NAMESPACE
#include "moc_qquickpopup_p.cpp"
diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h
index 4b5d3e72..51b155f2 100644
--- a/src/templates/qquickpopup_p.h
+++ b/src/templates/qquickpopup_p.h
@@ -56,6 +56,10 @@
#include <QtQml/qqmllist.h>
#include <QtQml/qqmlparserstatus.h>
+#ifndef QT_NO_ACCESSIBILITY
+#include <QtGui/qaccessible.h>
+#endif
+
QT_BEGIN_NAMESPACE
class QQuickItem;
@@ -315,6 +319,10 @@ protected:
virtual void marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins);
virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding);
+#ifndef QT_NO_ACCESSIBILITY
+ virtual QAccessible::Role accessibleRole() const;
+#endif
+
private:
Q_DISABLE_COPY(QQuickPopup)
Q_DECLARE_PRIVATE(QQuickPopup)
diff --git a/src/templates/qquickpopup_p_p.h b/src/templates/qquickpopup_p_p.h
index ba1e90a8..a6fdcd00 100644
--- a/src/templates/qquickpopup_p_p.h
+++ b/src/templates/qquickpopup_p_p.h
@@ -108,6 +108,10 @@ protected:
void itemChange(ItemChange change, const ItemChangeData &data) override;
void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessible::Role accessibleRole() const override;
+#endif
+
private:
Q_DECLARE_PRIVATE(QQuickPopupItem)
};
diff --git a/src/templates/qquickrangeslider.cpp b/src/templates/qquickrangeslider.cpp
index 1ca4fbed..6dcd7fcb 100644
--- a/src/templates/qquickrangeslider.cpp
+++ b/src/templates/qquickrangeslider.cpp
@@ -697,6 +697,24 @@ void QQuickRangeSlider::setValues(qreal firstValue, qreal secondValue)
secondPrivate->updatePosition();
}
+void QQuickRangeSlider::focusInEvent(QFocusEvent *event)
+{
+ Q_D(QQuickRangeSlider);
+ QQuickControl::focusInEvent(event);
+
+ // The active focus ends up to RangeSlider when using forceActiveFocus()
+ // or QML KeyNavigation. We must forward the focus to one of the handles,
+ // because RangeSlider handles key events for the focused handle. If
+ // neither handle has active focus, RangeSlider doesn't do anything.
+ QQuickItem *handle = nextItemInFocusChain();
+ // QQuickItem::nextItemInFocusChain() only works as desired with
+ // Qt::TabFocusAllControls. otherwise pick the first handle
+ if (!handle || handle == this)
+ handle = d->first->handle();
+ if (handle)
+ handle->forceActiveFocus(event->reason());
+}
+
void QQuickRangeSlider::keyPressEvent(QKeyEvent *event)
{
Q_D(QQuickRangeSlider);
diff --git a/src/templates/qquickrangeslider_p.h b/src/templates/qquickrangeslider_p.h
index 24653b0e..d81ab98a 100644
--- a/src/templates/qquickrangeslider_p.h
+++ b/src/templates/qquickrangeslider_p.h
@@ -109,6 +109,7 @@ Q_SIGNALS:
void trackChanged();
protected:
+ void focusInEvent(QFocusEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
void keyReleaseEvent(QKeyEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
diff --git a/tests/auto/accessibility/accessibility.pro b/tests/auto/accessibility/accessibility.pro
index c57eba11..ca751265 100644
--- a/tests/auto/accessibility/accessibility.pro
+++ b/tests/auto/accessibility/accessibility.pro
@@ -4,7 +4,7 @@ SOURCES += tst_accessibility.cpp
osx:CONFIG -= app_bundle
-QT += core-private gui-private qml-private quick-private testlib
+QT += core-private gui-private qml-private quick-private labstemplates-private testlib
include (../shared/util.pri)
diff --git a/tests/auto/accessibility/data/menu.qml b/tests/auto/accessibility/data/menu.qml
new file mode 100644
index 00000000..8903bd0b
--- /dev/null
+++ b/tests/auto/accessibility/data/menu.qml
@@ -0,0 +1,12 @@
+import QtQuick 2.5
+import QtQuick.Window 2.2
+import Qt.labs.controls 1.0
+
+Window {
+ visible: true
+
+ Menu {
+ id: menu
+ objectName: "menu"
+ }
+}
diff --git a/tests/auto/accessibility/data/popup.qml b/tests/auto/accessibility/data/popup.qml
new file mode 100644
index 00000000..e95ef2b7
--- /dev/null
+++ b/tests/auto/accessibility/data/popup.qml
@@ -0,0 +1,12 @@
+import QtQuick 2.5
+import QtQuick.Window 2.2
+import Qt.labs.controls 1.0
+
+Window {
+ visible: true
+
+ Popup {
+ id: popup
+ objectName: "popup"
+ }
+}
diff --git a/tests/auto/accessibility/tst_accessibility.cpp b/tests/auto/accessibility/tst_accessibility.cpp
index 16a138b5..8c05e2f2 100644
--- a/tests/auto/accessibility/tst_accessibility.cpp
+++ b/tests/auto/accessibility/tst_accessibility.cpp
@@ -41,6 +41,7 @@
#include <QtQml/qqmlcontext.h>
#include <QtQuick/qquickview.h>
#include <QtQuick/private/qquickitem_p.h>
+#include <QtLabsTemplates/private/qquickpopup_p.h>
#include "../shared/util.h"
#include "../shared/visualtestutil.h"
@@ -75,7 +76,9 @@ void tst_accessibility::a11y_data()
// Frame
// GroupBox
QTest::newRow("Label") << "label" << 0x00000029 << "Label"; //QAccessible::StaticText
+ QTest::newRow("Menu") << "menu" << 0x0000000B << ""; //QAccessible::PopupMenu
QTest::newRow("PageIndicator") << "pageindicator" << 0x00000027 << ""; //QAccessible::Indicator
+ QTest::newRow("Popup") << "popup" << 0x00000080 << ""; //QAccessible::LayeredPane
QTest::newRow("ProgressBar") << "progressbar" << 0x00000030 << ""; //QAccessible::ProgressBar
QTest::newRow("RadioButton") << "radiobutton" << 0x0000002D << "RadioButton"; //QAccessible::RadioButton
QTest::newRow("RangeSlider") << "rangeslider" << 0x00000033 << ""; //QAccessible::Slider
@@ -102,6 +105,14 @@ void tst_accessibility::a11y_data()
QTest::newRow("WeekNumberColumn") << "weeknumbercolumn" << 0x0 << "WeekNumberColumn"; //QAccessible::NoRole
}
+static QQuickAccessibleAttached *accessibleAttached(QQuickItem *item)
+{
+ QQuickAccessibleAttached *acc = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(item, false));
+ if (!acc)
+ acc = item->findChild<QQuickAccessibleAttached *>();
+ return acc;
+}
+
void tst_accessibility::a11y()
{
QFETCH(QString, name);
@@ -128,10 +139,15 @@ void tst_accessibility::a11y()
QVERIFY(QTest::qWaitForWindowActive(window));
QQuickItem *item = findItem<QQuickItem>(window->contentItem(), name);
+ if (!item) {
+ QQuickPopup *popup = window->contentItem()->findChild<QQuickPopup *>(name);
+ if (popup)
+ item = popup->popupItem();
+ }
QVERIFY(item);
#ifndef QT_NO_ACCESSIBILITY
- QQuickAccessibleAttached *acc = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(item, false));
+ QQuickAccessibleAttached *acc = accessibleAttached(item);
if (name != QLatin1Literal("dayofweekrow")
&& name != QLatin1Literal("monthgrid")
&& name != QLatin1Literal("weeknumbercolumn")) {
@@ -140,7 +156,7 @@ void tst_accessibility::a11y()
} else {
QVERIFY(!acc);
QAccessible::setActive(true);
- acc = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(item, false));
+ acc = accessibleAttached(item);
}
}
QVERIFY(acc);
diff --git a/tests/auto/calendar/data/tst_calendarmodel.qml b/tests/auto/calendar/data/tst_calendarmodel.qml
new file mode 100644
index 00000000..da2f3d8b
--- /dev/null
+++ b/tests/auto/calendar/data/tst_calendarmodel.qml
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtTest 1.0
+import QtQml 2.2
+import Qt.labs.calendar 1.0
+
+TestCase {
+ id: testCase
+ name: "CalendarModel"
+
+ Component {
+ id: calendarModel
+ CalendarModel { }
+ }
+
+ Component {
+ id: instantiator
+ Instantiator {
+ model: CalendarModel {
+ from: new Date(2016, 0, 1)
+ to: new Date(2016, 11, 31)
+ }
+ QtObject {
+ readonly property int month: model.month
+ readonly property int year: model.year
+ }
+ }
+ }
+
+ function test_indices_data() {
+ return [
+ { tag: "2013", from: "2013-01-01", to: "2013-12-31", count: 12 },
+ { tag: "2016", from: "2016-01-01", to: "2016-03-31", count: 3 }
+ ]
+ }
+
+ function test_indices(data) {
+ var model = calendarModel.createObject(testCase, {from: data.from, to: data.to})
+ verify(model)
+
+ compare(model.count, data.count)
+
+ var y = parseInt(data.tag)
+ for (var m = 0; m < 12; ++m) {
+ compare(model.yearAt(m), y)
+ compare(model.indexOf(y, m), m)
+ compare(model.indexOf(new Date(y, m, 1)), m)
+ compare(model.monthAt(m), m)
+ }
+
+ model.destroy()
+ }
+
+ function test_invalid() {
+ var model = calendarModel.createObject(testCase)
+ verify(model)
+
+ compare(model.indexOf(-1, -1), -1)
+ compare(model.indexOf(new Date(-1, -1, -1)), -1)
+
+ model.destroy()
+ }
+
+ function test_instantiator() {
+ var inst = instantiator.createObject(testCase)
+ verify(inst)
+
+ compare(inst.count, 12)
+ for (var m = 0; m < inst.count; ++m) {
+ compare(inst.objectAt(m).month, m)
+ compare(inst.objectAt(m).year, 2016)
+ }
+
+ inst.destroy()
+ }
+}
diff --git a/tests/auto/calendar/data/tst_monthgrid.qml b/tests/auto/calendar/data/tst_monthgrid.qml
index d07b77db..6c60f92f 100644
--- a/tests/auto/calendar/data/tst_monthgrid.qml
+++ b/tests/auto/calendar/data/tst_monthgrid.qml
@@ -51,12 +51,26 @@ TestCase {
name: "MonthGrid"
Component {
- id: component
+ id: defaultGrid
MonthGrid { }
}
+ Component {
+ id: delegateGrid
+ MonthGrid {
+ delegate: Item {
+ readonly property date date: model.date
+ readonly property int day: model.day
+ readonly property bool today: model.today
+ readonly property int weekNumber: model.weekNumber
+ readonly property int month: model.month
+ readonly property int year: model.year
+ }
+ }
+ }
+
function test_locale() {
- var control = component.createObject(testCase, {month: 0, year: 2013})
+ var control = delegateGrid.createObject(testCase, {month: 0, year: 2013})
compare(control.contentItem.children.length, 6 * 7 + 1)
@@ -68,37 +82,53 @@ TestCase {
control.locale = Qt.locale("en_GB")
compare(control.locale.name, "en_GB")
- // M T W T F S S
- var en_GB = [31, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10]
-
- for (var i = 0; i < 42; ++i)
- compare(control.contentItem.children[i].text, en_GB[i].toString())
+ // M T W T F S S
+ var en_GB = ["2012-12-31", "2013-01-01", "2013-01-02", "2013-01-03", "2013-01-04", "2013-01-05", "2013-01-06",
+ "2013-01-07", "2013-01-08", "2013-01-09", "2013-01-10", "2013-01-11", "2013-01-12", "2013-01-13",
+ "2013-01-14", "2013-01-15", "2013-01-16", "2013-01-17", "2013-01-18", "2013-01-19", "2013-01-20",
+ "2013-01-21", "2013-01-22", "2013-01-23", "2013-01-24", "2013-01-25", "2013-01-26", "2013-01-27",
+ "2013-01-28", "2013-01-29", "2013-01-30", "2013-01-31", "2013-02-01", "2013-02-02", "2013-02-03",
+ "2013-02-04", "2013-02-05", "2013-02-06", "2013-02-07", "2013-02-08", "2013-02-09", "2013-02-10"]
+
+ for (var i = 0; i < 42; ++i) {
+ var cellDate = new Date(en_GB[i])
+ compare(control.contentItem.children[i].date.getFullYear(), cellDate.getFullYear())
+ compare(control.contentItem.children[i].date.getMonth(), cellDate.getMonth())
+ compare(control.contentItem.children[i].date.getDate(), cellDate.getDate())
+ compare(control.contentItem.children[i].day, cellDate.getDate())
+ compare(control.contentItem.children[i].today, cellDate === new Date())
+ compare(control.contentItem.children[i].month, cellDate.getMonth())
+ compare(control.contentItem.children[i].year, cellDate.getFullYear())
+ }
// en_US
control.locale = Qt.locale("en_US")
compare(control.locale.name, "en_US")
- // S M T W T F S
- var en_US = [30, 31, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 1, 2,
- 3, 4, 5, 6, 7, 8, 9]
-
- for (var j = 0; j < 42; ++j)
- compare(control.contentItem.children[j].text, en_US[j].toString())
+ // S M T W T F S
+ var en_US = ["2012-12-30", "2012-12-31", "2013-01-01", "2013-01-02", "2013-01-03", "2013-01-04", "2013-01-05",
+ "2013-01-06", "2013-01-07", "2013-01-08", "2013-01-09", "2013-01-10", "2013-01-11", "2013-01-12",
+ "2013-01-13", "2013-01-14", "2013-01-15", "2013-01-16", "2013-01-17", "2013-01-18", "2013-01-19",
+ "2013-01-20", "2013-01-21", "2013-01-22", "2013-01-23", "2013-01-24", "2013-01-25", "2013-01-26",
+ "2013-01-27", "2013-01-28", "2013-01-29", "2013-01-30", "2013-01-31", "2013-02-01", "2013-02-02",
+ "2013-02-03", "2013-02-04", "2013-02-05", "2013-02-06", "2013-02-07", "2013-02-08", "2013-02-09"]
+
+ for (var j = 0; j < 42; ++j) {
+ cellDate = new Date(en_US[j])
+ compare(control.contentItem.children[j].date.getFullYear(), cellDate.getFullYear())
+ compare(control.contentItem.children[j].date.getMonth(), cellDate.getMonth())
+ compare(control.contentItem.children[j].date.getDate(), cellDate.getDate())
+ compare(control.contentItem.children[j].day, cellDate.getDate())
+ compare(control.contentItem.children[j].today, cellDate === new Date())
+ compare(control.contentItem.children[j].month, cellDate.getMonth())
+ compare(control.contentItem.children[j].year, cellDate.getFullYear())
+ }
control.destroy()
}
function test_range() {
- var control = component.createObject(testCase)
+ var control = defaultGrid.createObject(testCase)
control.month = 0
compare(control.month, 0)
@@ -132,7 +162,7 @@ TestCase {
}
function test_bce() {
- var control = component.createObject(testCase)
+ var control = defaultGrid.createObject(testCase)
compare(control.contentItem.children.length, 6 * 7 + 1)
@@ -178,7 +208,7 @@ TestCase {
}
function test_font() {
- var control = component.createObject(testCase)
+ var control = defaultGrid.createObject(testCase)
verify(control.contentItem.children[0])
diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml
index 20859dac..7a34834e 100644
--- a/tests/auto/controls/data/tst_popup.qml
+++ b/tests/auto/controls/data/tst_popup.qml
@@ -52,11 +52,16 @@ TestCase {
name: "Popup"
Component {
- id: popup
+ id: popupTemplate
T.Popup { }
}
Component {
+ id: popupControl
+ Popup { }
+ }
+
+ Component {
id: rect
Rectangle { }
}
@@ -97,7 +102,7 @@ TestCase {
}
function test_padding() {
- var control = popup.createObject(testCase)
+ var control = popupTemplate.createObject(testCase)
verify(control)
paddingSpy.target = control
@@ -205,7 +210,7 @@ TestCase {
}
function test_availableSize() {
- var control = popup.createObject(testCase)
+ var control = popupTemplate.createObject(testCase)
verify(control)
availableWidthSpy.target = control
@@ -277,7 +282,7 @@ TestCase {
}
function test_background() {
- var control = popup.createObject(testCase)
+ var control = popupTemplate.createObject(testCase)
verify(control)
control.background = rect.createObject(testCase)
@@ -591,4 +596,20 @@ TestCase {
control.destroy()
}
+
+ function test_size() {
+ var control = popupControl.createObject(testCase)
+ verify(control)
+
+ control.width = 200
+ control.height = 200
+
+ control.open()
+ waitForRendering(control.contentItem)
+
+ compare(control.width, 200)
+ compare(control.height, 200)
+
+ control.destroy()
+ }
}
diff --git a/tests/auto/controls/data/tst_rangeslider.qml b/tests/auto/controls/data/tst_rangeslider.qml
index 97104856..cc12b851 100644
--- a/tests/auto/controls/data/tst_rangeslider.qml
+++ b/tests/auto/controls/data/tst_rangeslider.qml
@@ -655,4 +655,38 @@ TestCase {
control.destroy()
}
+
+ function test_focus() {
+ var control = sliderComponent.createObject(testCase)
+ verify(control)
+
+ waitForRendering(control)
+ compare(control.activeFocus, false)
+
+ // focus is forwarded to the first handle
+ control.forceActiveFocus()
+ compare(control.activeFocus, true)
+ compare(control.first.handle.activeFocus, true)
+ compare(control.second.handle.activeFocus, false)
+
+ // move focus to the second handle
+ control.second.handle.forceActiveFocus()
+ compare(control.activeFocus, true)
+ compare(control.first.handle.activeFocus, false)
+ compare(control.second.handle.activeFocus, true)
+
+ // clear focus
+ control.focus = false
+ compare(control.activeFocus, false)
+ compare(control.first.handle.activeFocus, false)
+ compare(control.second.handle.activeFocus, false)
+
+ // focus is forwarded to the second handle (where it previously was in the focus scope)
+ control.forceActiveFocus()
+ compare(control.activeFocus, true)
+ compare(control.first.handle.activeFocus, false)
+ compare(control.second.handle.activeFocus, true)
+
+ control.destroy()
+ }
}