void K3b::WidgetShowEffect::slideMask() { if( m_bShow ) { m_widget->move( 0, m_widget->parentWidget()->height() - m_offset ); m_offset++; if( m_offset > m_widget->height() ) { killTimer( m_timerId ); emit widgetShown( m_widget ); if( m_deleteSelf ) deleteLater(); } } else { m_offset--; m_widget->move( 0, m_widget->parentWidget()->height() - m_offset ); if( m_offset < 0 ) { // finally hide the widget emit widgetHidden( m_widget ); if( !m_bEffectOnly ) m_widget->hide(); if( m_deleteSelf ) deleteLater(); } } }
KateMessageWidget::KateMessageWidget(QWidget* parent, bool applyFadeEffect) : QWidget(parent) , m_animation(0) , m_autoHideTimer(new QTimer(this)) , m_autoHideTime(-1) { QVBoxLayout* l = new QVBoxLayout(); l->setMargin(0); m_messageWidget = new KMessageWidget(this); m_messageWidget->setCloseButtonVisible(false); l->addWidget(m_messageWidget); setLayout(l); // tell the widget to always use the minimum size. setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); // install event filter so we catch the end of the hide animation m_messageWidget->installEventFilter(this); // by default, hide widgets m_messageWidget->hide(); hide(); // create animation controller, and connect widgetHidden() to showNextMessage() m_animation = new KateAnimation(m_messageWidget, applyFadeEffect ? KateAnimation::FadeEffect : KateAnimation::GrowEffect); connect(m_animation, SIGNAL(widgetHidden()), this, SLOT(showNextMessage())); // setup autoHide timer details m_autoHideTimer->setSingleShot(true); // KMessageWidget::linkHovered() is new in KDE 4.11 connect(m_messageWidget, SIGNAL(linkHovered(const QString&)), this, SLOT(linkHovered(const QString&))); }
void K3b::WidgetShowEffect::dissolveMask() { if( m_bShow ) { m_widget->repaint(); QPainter maskPainter(&m_mask); m_mask.fill(Qt::black); maskPainter.setBrush(Qt::white); maskPainter.setPen(Qt::white); maskPainter.drawRect( m_mask.rect() ); m_dissolveSize += m_dissolveDelta; if( m_dissolveSize > 0 ) { //FIXME kde4 //maskPainter.setRasterOp( Qt::EraseROP ); int x, y, s; const int size = 16; for( y = 0; y < m_widget->height() + size; y += size ) { x = m_widget->width(); s = m_dissolveSize * x / 128; for( ; x > size; x -= size, s -= 2 ) { if( s < 0 ) break; maskPainter.drawEllipse(x - s / 2, y - s / 2, s, s); } } } else if( m_dissolveSize < 0 ) { m_dissolveDelta = 1; killTimer( m_timerId ); emit widgetShown( m_widget ); if( m_deleteSelf ) deleteLater(); } m_widget->setMask( m_mask ); } else { // just hide it for now emit widgetHidden( m_widget ); if( !m_bEffectOnly ) m_widget->hide(); if( m_deleteSelf ) deleteLater(); } }
void KateFadeEffect::animationFinished() { // fading finished: remove graphics effect, deletes the effect as well m_widget->setGraphicsEffect(0); Q_ASSERT(!m_effect); if (m_timeLine->direction() == QTimeLine::Backward) { m_widget->hide(); emit widgetHidden(); } }
void MainWidget::hide() { QWidget::hide(); emit widgetHidden(); }