//----------------------------------------------------------------------- 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())); }
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(); } }
//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())); }