//-----------------------------------------------------------------------
void PanelAnimator::animate()
{
    if (m_eCurrentAction == eClosed)
    {
        if (!m_CloseIcon.isNull())
        {
            if (QPushButton* pBtn = dynamic_cast<QPushButton*>(m_pBorderWidget))
            {
                pBtn->setIcon(m_CloseIcon);
            }
        }

        m_iTotalDelta = 0;
        emit opening();
        animateOpen();
    }
    else if (m_eCurrentAction == eOpened)
    {
        if (!m_OpenIcon.isNull())
        {
            if (QPushButton* pBtn = dynamic_cast<QPushButton*>(m_pBorderWidget))
            {
                pBtn->setIcon(m_OpenIcon);
            }
        }

        m_iTotalDelta = 0;
        emit closing();
        animateClose();
    }
}
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    //Set Main Window Properties.
    setWindowOpacity(0);
    setWindowState(Qt::WindowFullScreen);

    //Set Main Window Palette.
    QPalette pal=palette();
    pal.setColor(QPalette::Window, QColor(0,0,0));
    setPalette(pal);

    fadeAnimation=new QTimeLine(200, this);
    fadeAnimation->setUpdateInterval(5);
    fadeAnimation->setFrameRange(0,9);
    connect(fadeAnimation, SIGNAL(valueChanged(qreal)),
            this, SLOT(updateBackgroundAlpha(qreal)));

    mainContext=new ContextWindow(this);
    setCentralWidget(mainContext);
    connect(mainContext, SIGNAL(requireExit()),
            this, SLOT(animateClose()));
    connect(mainContext, SIGNAL(requireUninstall()),
            this, SLOT(animateDestory()));
}
Beispiel #3
0
void KCMessageBox::keyPressEvent(QKeyEvent *e)
{
    switch(e->key())
    {
    case Qt::Key_Enter:
    case Qt::Key_Return:
        messageFilter(KCMessageBoxPanel::buttonOK);
        animateClose();
        break;
    case Qt::Key_Escape:
        messageFilter(KCMessageBoxPanel::buttonCancel);
        animateClose();
        break;
    default:
        QDialog::keyPressEvent(e);
        break;
    }
}
//-----------------------------------------------------------------------
void PanelAnimator::close()
{
    if (!m_OpenIcon.isNull())
    {
        if (QPushButton* pBtn = dynamic_cast<QPushButton*>(m_pBorderWidget))
        {
            pBtn->setIcon(m_OpenIcon);
        }
    }

    m_iTotalDelta = 0;
    emit closing();
    animateClose();
}
//-----------------------------------------------------------------------
void PanelAnimator::animateClose()
{
    m_eCurrentAction = eOnClose;

    QRectF r = m_pProxyCentralWidget->boundingRect();

    m_iTotalDelta += m_iDelta;

    int iStopCoord = 0;

    // On deplace le panel en fonction de son placement
    switch (m_ePlacement)
    {
    case eRight:
        m_pProxyCentralWidget->setTransform(QTransform().translate(- r.width() + m_iTotalDelta, 0));
        if (m_pProxyBorderWidget) m_pProxyBorderWidget->setTransform(QTransform().translate(- r.width() + m_iTotalDelta, 0));
        iStopCoord = r.width();
        break;
    case eLeft:
        m_pProxyCentralWidget->setTransform(QTransform().translate(r.width() - m_iTotalDelta, 0));
        if (m_pProxyBorderWidget) m_pProxyBorderWidget->setTransform(QTransform().translate(r.width() - m_iTotalDelta, 0));
        iStopCoord = r.width();
        break;
    case eTop:
        m_pProxyCentralWidget->setTransform(QTransform().translate(0, r.height() - m_iTotalDelta));
        if (m_pProxyBorderWidget) m_pProxyBorderWidget->setTransform(QTransform().translate(0, r.height() - m_iTotalDelta));
        iStopCoord = r.height();
        break;
    case eBottom:
        m_pProxyCentralWidget->setTransform(QTransform().translate(0, - r.height() + m_iTotalDelta));
        if (m_pProxyBorderWidget) m_pProxyBorderWidget->setTransform(QTransform().translate(0, - r.height() + m_iTotalDelta));
        iStopCoord = r.height();
        break;
    }

    if (m_iTotalDelta < iStopCoord)
    {
        QTimer::singleShot(StepAnimationDT, this, SLOT(animateClose()));
    }
    else
    {
        m_eCurrentAction = eClosed;
        // On s'assure d'être en butée
        m_pProxyCentralWidget->setTransform(QTransform());
        if (m_pProxyBorderWidget) m_pProxyBorderWidget->setTransform(QTransform());

        emit closed();
    }
}
Beispiel #6
0
//Message Box Title
KCMessageBox::KCMessageBox(QWidget *parent) :
    QDialog(parent)
{
    //Set properties
    setWindowFlags(windowFlags() | Qt::ToolTip);
    setWindowOpacity(0.95);

    //Set default value
    messageState=KCMessageBoxPanel::none;

    //Set layout
    mainLayout=new QVBoxLayout(this);
    mainLayout->setContentsMargins(0,0,0,0);
    mainLayout->setSpacing(0);
    setLayout(mainLayout);

    //Set title
    title=new KCMessageBoxTitle(this);
    mainLayout->addWidget(title);

    context=new KCMessageBoxContext(this);
    mainLayout->addWidget(context, 1);

    //Set panel
    panel=new KCMessageBoxPanel(this);
    mainLayout->addWidget(panel);

    connect(panel, SIGNAL(requiredMessage(KCMessageBoxPanel::buttonState)),
            this, SLOT(messageFilter(KCMessageBoxPanel::buttonState)));
    connect(panel, SIGNAL(requiredExit()),
            this, SLOT(animateClose()));

    showAnimation=new QSequentialAnimationGroup(this);

    widthExpand=new QPropertyAnimation(this, "geometry", this);
    widthExpand->setDuration(100);

    heightExpand=new QPropertyAnimation(this, "geometry", this);
    heightExpand->setDuration(150);
    heightExpand->setEasingCurve(QEasingCurve::OutCubic);

    exitAnimation=new QPropertyAnimation(this, "geometry", this);
    exitAnimation->setDuration(100);
    connect(exitAnimation, SIGNAL(finished()),
            this, SLOT(close()));
}