Make translucency for active/inactive and moving/resizing fade in

smoothly, using TimeLine. There's a config option allowing you to
set the time. We're defaulting to 1500 msec, which sounds rather
long but in fact feels quite well. Apparently eye and math
disagree a bit :)

svn path=/trunk/KDE/kdebase/workspace/; revision=802133
This commit is contained in:
Sebastian Kügler 2008-04-28 16:10:10 +00:00
parent 6925faa034
commit ff15813559
4 changed files with 462 additions and 323 deletions

View file

@ -50,10 +50,17 @@ MakeTransparentEffect::MakeTransparentEffect()
tornoffmenus = menus;
}
active = effects->activeWindow();
moveresize_timeline.setCurveShape( TimeLine::EaseOutCurve );
moveresize_timeline.setDuration( conf.readEntry( "Duration", 1500 ) );
activeinactive_timeline.setCurveShape( TimeLine::EaseInOutCurve );
activeinactive_timeline.setDuration( conf.readEntry( "Duration", 1500 ) );
}
void MakeTransparentEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time )
{
moveresize_timeline.addTime(time);
activeinactive_timeline.addTime(time);
if( decoration != 1.0 && w->hasDecoration())
{
data.mask |= PAINT_WINDOW_TRANSLUCENT;
@ -78,18 +85,78 @@ void MakeTransparentEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData&
void MakeTransparentEffect::paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data )
{
// We keep track of the windows that was last active so we know
// which one to fade out and which ones to paint as fully inactive
if ( w == active && w != current )
{
previous = current;
current = w;
}
if ( w->isDesktop() || w->isDock() )
{
effects->paintWindow( w, mask, region, data );
return;
}
// Handling active and inactive windows
if( inactive != 1.0 && isInactive(w) )
{
data.opacity *= inactive;
if ( w == previous )
{
data.opacity *= (inactive + ((1.0 - inactive) * (1.0 - activeinactive_timeline.value())));
if ( activeinactive_timeline.value() < 1.0 )
w->addRepaintFull();
}
}
else
{
// Fading in
if ( !isInactive(w) && !w->isDesktop() )
{
data.opacity *= (inactive + ((1.0 - inactive) * activeinactive_timeline.value()));
if ( activeinactive_timeline.value() < 1.0 )
w->addRepaintFull();
}
// decoration and dialogs
if( decoration != 1.0 && w->hasDecoration())
data.decoration_opacity *= decoration;
if( dialogs != 1.0 && w->isDialog())
data.opacity *= dialogs;
if( moveresize != 1.0 && ( w->isUserMove() || w->isUserResize()))
data.opacity *= moveresize;
// Handling moving and resizing
if( moveresize != 1.0 && !isInactive(w) && !w->isDesktop() && !w->isDock())
{
double progress = moveresize_timeline.value();
if ( w->isUserMove() || w->isUserResize() )
{ // Fading to translucent
if ( w == active )
{
data.opacity *= (moveresize + ((1.0 - moveresize) * ( 1.0 - progress )));
if (progress < 1.0)
{
w->addRepaintFull();
if ( fadeout != w )
fadeout = w;
}
}
}
else
{ // Fading back to more opaque
if ( w == active && (w == fadeout) && !w->isUserMove() && !w->isUserResize() )
{
data.opacity *= (moveresize + ((1.0 - moveresize) * (progress)));
if ( progress == 1.0 )
fadeout = NULL;
else
w->addRepaintFull();
}
}
}
// Menues and combos
if( dropdownmenus != 1.0 && w->isDropdownMenu() )
data.opacity *= dropdownmenus;
if( popupmenus != 1.0 && w->isPopupMenu() )
@ -98,6 +165,7 @@ void MakeTransparentEffect::paintWindow( EffectWindow* w, int mask, QRegion regi
data.opacity *= tornoffmenus;
if( comboboxpopups != 1.0 && w->isComboBox() )
data.opacity *= comboboxpopups;
}
effects->paintWindow( w, mask, region, data );
}
@ -117,13 +185,17 @@ bool MakeTransparentEffect::isInactive( const EffectWindow* w ) const
void MakeTransparentEffect::windowUserMovedResized( EffectWindow* w, bool first, bool last )
{
if( moveresize != 1.0 && ( first || last ))
{
moveresize_timeline.setProgress(0.0);
w->addRepaintFull();
}
}
void MakeTransparentEffect::windowActivated( EffectWindow* w )
{
if( inactive != 1.0 )
{
activeinactive_timeline.setProgress(0.0);
if( NULL != active && active != w )
{
if( ( NULL == w || w->group() != active->group() ) &&
@ -149,7 +221,6 @@ void MakeTransparentEffect::windowActivated( EffectWindow* w )
w->addRepaintFull();
}
}
active = w;
}

View file

@ -37,6 +37,7 @@ class MakeTransparentEffect
virtual void windowActivated( EffectWindow* w );
private:
bool isInactive( const EffectWindow *w ) const;
bool individualmenuconfig;
double decoration;
double moveresize;
@ -44,12 +45,17 @@ class MakeTransparentEffect
double inactive;
double comboboxpopups;
double menus;
bool individualmenuconfig;
double dropdownmenus;
double popupmenus;
double tornoffmenus;
EffectWindow* fadeout;
EffectWindow* current;
EffectWindow* previous;
EffectWindow* active;
TimeLine moveresize_timeline;
TimeLine activeinactive_timeline;
};
} // namespace

View file

@ -61,6 +61,7 @@ MakeTransparentEffectConfig::MakeTransparentEffectConfig(QWidget* parent, const
connect(m_ui->dropdownmenus, SIGNAL(valueChanged(int)), this, SLOT(changed()));
connect(m_ui->popupmenus, SIGNAL(valueChanged(int)), this, SLOT(changed()));
connect(m_ui->tornoffmenus, SIGNAL(valueChanged(int)), this, SLOT(changed()));
connect(m_ui->duration, SIGNAL(valueChanged(int)), this, SLOT(changed()));
load();
}
@ -94,6 +95,7 @@ void MakeTransparentEffectConfig::load()
m_ui->dropdownmenus->setValue( (int)( conf.readEntry( "DropdownMenus", 1.0) * 100 ) );
m_ui->popupmenus->setValue( (int)( conf.readEntry( "PopupMenus", 1.0) * 100 ) );
m_ui->tornoffmenus->setValue( (int)( conf.readEntry( "TornOffMenus", 1.0) * 100 ) );
m_ui->duration->setValue( conf.readEntry( "Duration", 1500) );
setIndividualMenuConfig( m_ui->individualmenuconfig->isChecked() ? Qt::Checked : Qt::Unchecked );
emit changed(false);
@ -115,6 +117,7 @@ void MakeTransparentEffectConfig::save()
conf.writeEntry( "DropdownMenus", m_ui->dropdownmenus->value() / 100.0 );
conf.writeEntry( "PopupMenus", m_ui->popupmenus->value() / 100.0 );
conf.writeEntry( "TornOffMenus", m_ui->tornoffmenus->value() / 100.0 );
conf.writeEntry( "Duration", m_ui->duration->value() );
conf.sync();
emit changed(false);
@ -134,6 +137,7 @@ void MakeTransparentEffectConfig::defaults()
m_ui->dropdownmenus->setValue( 100 );
m_ui->popupmenus->setValue( 100 );
m_ui->tornoffmenus->setValue( 100 );
m_ui->duration->setValue( 1500 );
emit changed(true);
}

View file

@ -5,246 +5,21 @@
<rect>
<x>0</x>
<y>0</y>
<width>318</width>
<height>423</height>
<width>497</width>
<height>634</height>
</rect>
</property>
<property name="windowTitle" >
<string>Translucency</string>
</property>
<layout class="QGridLayout" name="gridLayout_3" >
<item row="0" column="0" >
<widget class="QGroupBox" name="m_opacityGroupBox" >
<property name="title" >
<string>General opacity settings:</string>
</property>
<layout class="QGridLayout" name="gridLayout" >
<item row="0" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout" >
<item>
<widget class="QLabel" name="decorations_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Decorations:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="decorations" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_2" >
<item>
<widget class="QLabel" name="inactive_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Inactive windows:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="inactive" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_3" >
<item>
<widget class="QLabel" name="moveresize_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Moved or resized windows:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="moveresize" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_4" >
<item>
<widget class="QLabel" name="dialogs_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Dialogs:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="dialogs" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_5" >
<item>
<widget class="QLabel" name="comboboxpopup_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Combobox Popups:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="comboboxpopup" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_6" >
<item>
<widget class="QLabel" name="menus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Menus:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="menus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" >
<widget class="QGroupBox" name="groupBox" >
<property name="title" >
<string>Advanced opacity settings for menus:</string>
</property>
<layout class="QGridLayout" name="gridLayout_2" >
<item row="0" column="0" >
<item row="0" column="0" colspan="2" >
<widget class="QCheckBox" name="individualmenuconfig" >
<property name="text" >
<string>Set individual opacity for different menu types</string>
@ -252,112 +27,362 @@
</widget>
</item>
<item row="1" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_7" >
<item>
<widget class="QLabel" name="dropdownmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Dropdown menus:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="dropdownmenus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
<widget class="QLabel" name="dropdownmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Dropdown menus:</string>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QSpinBox" name="dropdownmenus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="2" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_8" >
<widget class="QLabel" name="popupmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Popup menus:</string>
</property>
</widget>
</item>
<item row="2" column="1" >
<widget class="QSpinBox" name="popupmenus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="tornoffmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Torn-off menus:</string>
</property>
</widget>
</item>
<item row="3" column="1" >
<widget class="QSpinBox" name="tornoffmenus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0" >
<widget class="QGroupBox" name="m_opacityGroupBox" >
<property name="title" >
<string>General opacity settings:</string>
</property>
<layout class="QGridLayout" name="gridLayout" >
<item row="0" column="0" colspan="2" >
<widget class="QLabel" name="decorations_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Decorations:</string>
</property>
</widget>
</item>
<item row="0" column="2" >
<widget class="QSpinBox" name="decorations" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2" >
<widget class="QLabel" name="inactive_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Inactive windows:</string>
</property>
</widget>
</item>
<item row="1" column="2" >
<widget class="QSpinBox" name="inactive" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2" >
<widget class="QLabel" name="moveresize_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Moved or resized windows:</string>
</property>
</widget>
</item>
<item row="2" column="2" >
<widget class="QSpinBox" name="moveresize" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2" >
<widget class="QLabel" name="dialogs_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Dialogs:</string>
</property>
</widget>
</item>
<item row="3" column="2" >
<widget class="QSpinBox" name="dialogs" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2" >
<widget class="QLabel" name="comboboxpopup_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Combobox Popups:</string>
</property>
</widget>
</item>
<item row="4" column="2" >
<widget class="QSpinBox" name="comboboxpopup" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2" >
<widget class="QLabel" name="menus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Menus:</string>
</property>
</widget>
</item>
<item row="5" column="2" >
<widget class="QSpinBox" name="menus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
<item row="6" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout" >
<item>
<widget class="QLabel" name="popupmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<widget class="QLabel" name="label" >
<property name="text" >
<string>Popup menus:</string>
<string>Fading duration:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="popupmenus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<widget class="QSlider" name="durationSlider" >
<property name="minimum" >
<number>10</number>
<number>0</number>
</property>
<property name="maximum" >
<number>5000</number>
</property>
<property name="singleStep" >
<number>100</number>
</property>
<property name="pageStep" >
<number>100</number>
</property>
<property name="value" >
<number>1500</number>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" >
<number>500</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0" >
<layout class="QHBoxLayout" name="horizontalLayout_9" >
<item>
<widget class="QLabel" name="tornoffmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Torn-off menus:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="tornoffmenus" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix" >
<string>%</string>
</property>
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
</widget>
</item>
</layout>
<item row="6" column="2" >
<widget class="QSpinBox" name="duration" >
<property name="minimumSize" >
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="suffix" >
<string>msec</string>
</property>
<property name="maximum" >
<number>5000</number>
</property>
<property name="singleStep" >
<number>100</number>
</property>
<property name="value" >
<number>1500</number>
</property>
</widget>
</item>
</layout>
</widget>
@ -365,5 +390,38 @@
</layout>
</widget>
<resources/>
<connections/>
<connections>
<connection>
<sender>duration</sender>
<signal>valueChanged(int)</signal>
<receiver>durationSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
<x>433</x>
<y>282</y>
</hint>
<hint type="destinationlabel" >
<x>246</x>
<y>283</y>
</hint>
</hints>
</connection>
<connection>
<sender>durationSlider</sender>
<signal>valueChanged(int)</signal>
<receiver>duration</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel" >
<x>246</x>
<y>283</y>
</hint>
<hint type="destinationlabel" >
<x>433</x>
<y>282</y>
</hint>
</hints>
</connection>
</connections>
</ui>