summaryrefslogtreecommitdiffstats
path: root/tests/manual/windowflags/controls.cpp
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2017-02-03 15:55:49 +0100
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2017-02-09 14:11:00 +0000
commit92dc1752d477cfa5ea72e6a0489d21a42213371c (patch)
tree52556bc7a7f189c81ce1d2874f34e7006451d8b7 /tests/manual/windowflags/controls.cpp
parent2aa62dad1d0de1142d446ecc4a6b38393231a17d (diff)
windowflags test: Don't assume window states can not be compound
The controls need to reflect the facts that e.g. maximized and fullscreen can both be set at the same time, the same way a window can be minimized and fullscreen. Change-Id: I7f3e354a5efaefb9f51e6b1f24fa35980fe35899 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'tests/manual/windowflags/controls.cpp')
-rw-r--r--tests/manual/windowflags/controls.cpp96
1 files changed, 33 insertions, 63 deletions
diff --git a/tests/manual/windowflags/controls.cpp b/tests/manual/windowflags/controls.cpp
index 319f6aac8e..c167e5f8bf 100644
--- a/tests/manual/windowflags/controls.cpp
+++ b/tests/manual/windowflags/controls.cpp
@@ -161,97 +161,71 @@ void HintControl::slotCheckBoxChanged()
emit changed(hints());
}
-WindowStateControl::WindowStateControl(unsigned flags, QWidget *parent)
+WindowStateControl::WindowStateControl(QWidget *parent)
: QWidget(parent)
, group(new QButtonGroup)
- , visibleCheckBox(0)
- , restoreButton(new QRadioButton(tr("Normal")))
- , minimizeButton(0)
- , maximizeButton(new QRadioButton(tr("Maximized")))
- , fullscreenButton(new QRadioButton(tr("Fullscreen")))
+ , restoreButton(new QCheckBox(tr("Normal")))
+ , minimizeButton(new QCheckBox(tr("Minimized")))
+ , maximizeButton(new QCheckBox(tr("Maximized")))
+ , fullscreenButton(new QCheckBox(tr("Fullscreen")))
{
QHBoxLayout *layout = new QHBoxLayout(this);
- layout->setSpacing(0);
+ group->setExclusive(false);
layout->setMargin(ControlLayoutMargin);
- if (flags & WantVisibleCheckBox) {
- visibleCheckBox = new QCheckBox(tr("Visible"));
- connect(visibleCheckBox, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- layout->addWidget(visibleCheckBox);
- }
-
- group->setExclusive(true);
- if (flags & WantMinimizeRadioButton) {
- minimizeButton = new QRadioButton(tr("Minimized"));
- group->addButton(minimizeButton, Qt::WindowMinimized);
- layout->addWidget(minimizeButton);
- }
group->addButton(restoreButton, Qt::WindowNoState);
+ restoreButton->setEnabled(false);
layout->addWidget(restoreButton);
+ group->addButton(minimizeButton, Qt::WindowMinimized);
+ layout->addWidget(minimizeButton);
group->addButton(maximizeButton, Qt::WindowMaximized);
layout->addWidget(maximizeButton);
group->addButton(fullscreenButton, Qt::WindowFullScreen);
layout->addWidget(fullscreenButton);
- connect(group, SIGNAL(buttonReleased(int)), this, SIGNAL(changed()));
+ connect(group, SIGNAL(buttonReleased(int)), this, SIGNAL(stateChanged(int)));
}
-Qt::WindowState WindowStateControl::state() const
+Qt::WindowStates WindowStateControl::state() const
{
- return Qt::WindowState(group->checkedId());
+ Qt::WindowStates states;
+ foreach (QAbstractButton *button, group->buttons()) {
+ if (button->isChecked())
+ states |= Qt::WindowState(group->id(button));
+ }
+ return states;
}
-void WindowStateControl::setState(Qt::WindowState s)
+void WindowStateControl::setState(Qt::WindowStates s)
{
group->blockSignals(true);
- if (QAbstractButton *b = group->button(s))
- b->setChecked(true);
- group->blockSignals(false);
-}
+ foreach (QAbstractButton *button, group->buttons())
+ button->setChecked(s & Qt::WindowState(group->id(button)));
-bool WindowStateControl::visibleValue() const
-{
- return visibleCheckBox && visibleCheckBox->isChecked();
-}
+ if (!(s & (Qt::WindowMaximized | Qt::WindowFullScreen)))
+ restoreButton->setChecked(true);
-void WindowStateControl::setVisibleValue(bool v)
-{
- if (visibleCheckBox) {
- visibleCheckBox->blockSignals(true);
- visibleCheckBox->setChecked(v);
- visibleCheckBox->blockSignals(false);
- }
+ group->blockSignals(false);
}
-WindowStatesControl::WindowStatesControl(unsigned flags, QWidget *parent)
+WindowStatesControl::WindowStatesControl(QWidget *parent)
: QGroupBox(tr("States"), parent)
- , visibleCheckBox(0)
- , activeCheckBox(0)
- , minimizeCheckBox(new QCheckBox(tr("Minimized")))
- , stateControl(new WindowStateControl(0))
+ , visibleCheckBox(new QCheckBox(tr("Visible")))
+ , activeCheckBox(new QCheckBox(tr("Active")))
+ , stateControl(new WindowStateControl)
{
QHBoxLayout *layout = new QHBoxLayout(this);
layout->setSpacing(0);
layout->setMargin(ControlLayoutMargin);
- if (flags & WantVisibleCheckBox) {
- visibleCheckBox = new QCheckBox(tr("Visible"));
- connect(visibleCheckBox, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- layout->addWidget(visibleCheckBox);
- }
- if (flags & WantActiveCheckBox) {
- activeCheckBox = new QCheckBox(tr("Active"));
- connect(activeCheckBox, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- layout->addWidget(activeCheckBox);
- }
- layout->addWidget(minimizeCheckBox);
+ connect(visibleCheckBox, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ layout->addWidget(visibleCheckBox);
+ connect(activeCheckBox, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ layout->addWidget(activeCheckBox);
layout->addWidget(stateControl);
- connect(stateControl, SIGNAL(changed()), this, SIGNAL(changed()));
- connect(minimizeCheckBox, SIGNAL(clicked()), this, SIGNAL(changed()));
+ connect(stateControl, SIGNAL(stateChanged(int)), this, SIGNAL(changed()));
}
Qt::WindowStates WindowStatesControl::states() const
{
Qt::WindowStates s = stateControl->state();
- if (minimizeCheckBox->isChecked())
- s |= Qt::WindowMinimized;
if (activeValue())
s |= Qt::WindowActive;
return s;
@@ -259,11 +233,7 @@ Qt::WindowStates WindowStatesControl::states() const
void WindowStatesControl::setStates(Qt::WindowStates s)
{
- minimizeCheckBox->blockSignals(true);
- minimizeCheckBox->setChecked(s & Qt::WindowMinimized);
- minimizeCheckBox->blockSignals(false);
- s &= ~Qt::WindowMinimized;
- stateControl->setState(Qt::WindowState(int(s)));
+ stateControl->setState(s);
setActiveValue(s & Qt::WindowActive);
}