MCPcopy Create free account
hub / github.com/Audio4Linux/JDSP4Linux / slideIn

Method slideIn

3rdparty/WAF/Animation/Slide/SlideAnimator.cpp:96–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94}
95
96void SlideAnimator::slideIn()
97{
98 if (!m_startMinSize.isValid()) {
99 m_startMinSize = widgetForSlide()->minimumSize();
100 }
101 if (!m_startMaxSize.isValid()) {
102 m_startMaxSize = widgetForSlide()->maximumSize();
103 }
104 if (!m_startSize.isValid()) {
105 m_startSize = widgetForSlide()->sizeHint();
106 }
107
108 //
109 // Прерываем выполнение, если клиент хочет повторить его
110 //
111 if (isAnimated() && isAnimatedForward()) return;
112 setAnimatedForward();
113
114 //
115 // Определим размер неизменяемой стороны выкатываемого виджета
116 //
117 if (isWidth()) {
118 widgetForSlide()->setMaximumWidth(0);
119 } else {
120 widgetForSlide()->setMaximumHeight(0);
121 }
122 widgetForSlide()->show();
123 const QSize currentSize = widgetForSlide()->size();
124
125 //
126 // Определим финальный размер выкатываемого виджета
127 //
128 QSize finalSize = currentSize;
129 fixSize(m_startSize, finalSize);
130
131 //
132 // Сформируем изображение выкатываемого виджета
133 //
134 // NOTE: т.к. у виджета меняется свойство maximumSize, его невозможно корректно отрисовать,
135 // если высота или ширина равны нулю, поэтому применяем небольшую хитрость
136 //
137 widgetForSlide()->hide();
138 fixSizeOfWidgetForSlide(finalSize);
139 m_decorator->grabParent(finalSize);
140 fixSizeOfWidgetForSlide(currentSize);
141 widgetForSlide()->show();
142
143 if (m_isFixBackground) {
144 //
145 // Позиционируем декоратор
146 //
147 m_decorator->move(0, 0);
148 m_decorator->show();
149 m_decorator->raise();
150 }
151
152 //
153 // Выкатываем виджет

Callers

nothing calls this directly

Calls 8

hideMethod · 0.80
moveMethod · 0.80
setEasingCurveMethod · 0.80
startMethod · 0.80
sizeHintMethod · 0.45
sizeMethod · 0.45
grabParentMethod · 0.45
raiseMethod · 0.45

Tested by

no test coverage detected