bool JokerWindow::eventFilter(QObject * sender, QEvent *event) { /// The event filter catch the following event: switch (event->type()) { case QEvent::FileOpen: /// - FileOpen : To process a file dragged on the application dock icon (MacOS) { #warning /// @todo move to PhDocumentWindow QString filePath = static_cast<QFileOpenEvent *>(event)->file(); QString fileType = filePath.split(".").last().toLower(); // As the plist file list all the supported format // if the file is not a strip file, it's a video file, we don't need any protection if(_settings->stripFileType().contains(fileType)) { if(checkSaveFile()) openDocument(filePath); } else if(_settings->videoFileType().contains(fileType)) openVideoFile(filePath); break; } case QEvent::ApplicationDeactivate: /// - ApplicationDeactivate : to hide the mediapanel hideMediaPanel(); break; case QEvent::MouseMove: /// - Mouse move show the media panel { fadeInMediaPanel(); // Check if it is near the video/strip border QMouseEvent * mouseEvent = (QMouseEvent*)event; if(_resizingStrip) { QApplication::setOverrideCursor(Qt::SizeVerCursor); if(mouseEvent->buttons() & Qt::LeftButton) _settings->setStripHeight(1.0 - ((float) mouseEvent->pos().y() /(float) this->height())); } else QApplication::setOverrideCursor(Qt::ArrowCursor); break; } case QEvent::DragEnter: /// - Accept and process a file drop on the window event->accept(); break; case QEvent::Drop: { #warning /// @todo move to PhDocumentWindow const QMimeData* mimeData = static_cast<QDropEvent *>(event)->mimeData(); // If there is one file (not more) we open it if (mimeData->urls().length() == 1) { QString filePath = mimeData->urls().first().toLocalFile(); QString fileType = filePath.split(".").last().toLower(); if(fileType == "detx" or fileType == "strip" or fileType == "joker") { if(checkSaveFile()) openDocument(filePath); } else if (fileType == "avi" or fileType == "mov") openVideoFile(filePath); } break; } case QEvent::MouseButtonDblClick: /// - Double mouse click toggle fullscreen mode _resizingStrip = false; if(sender == this) toggleFullScreen(); break; case QEvent::MouseButtonRelease: QApplication::setOverrideCursor(Qt::ArrowCursor); break; case QEvent::MouseButtonPress: { QMouseEvent *mouseEvent = (QMouseEvent*)event; if((sender == this) && (mouseEvent->buttons() & Qt::RightButton)) { /// - Right mouse click on the video open the video file dialog. if(mouseEvent->y() < this->height() * (1.0f - _settings->stripHeight())) on_actionOpen_Video_triggered(); else /// - Left mouse click on the strip open the strip file dialog. on_actionOpen_triggered(); return true; } float stripHeight = this->height() * _settings->stripHeight(); if((mouseEvent->pos().y() > (this->height() - stripHeight) - 10) && (mouseEvent->pos().y() < (this->height() - stripHeight) + 10)) { QApplication::setOverrideCursor(Qt::SizeVerCursor); _resizingStrip = true; } } default: break; } return PhDocumentWindow::eventFilter(sender, event); }
bool JokerWindow::eventFilter(QObject * sender, QEvent *event) { /// The event filter catch the following event: switch (event->type()) { case QEvent::MouseMove: /// - Mouse move show the media panel case QEvent::HoverEnter: case QEvent::HoverMove: { fadeInMediaPanel(); QMouseEvent * mouseEvent = (QMouseEvent*)event; // Check if it is near the video/strip border float stripHeight = this->height() * _settings->stripHeight(); if((mouseEvent->pos().y() > (this->height() - stripHeight) - 10) && (mouseEvent->pos().y() < (this->height() - stripHeight) + 10)) QApplication::setOverrideCursor(Qt::SizeVerCursor); else QApplication::setOverrideCursor(Qt::ArrowCursor); if(_resizingStrip && (mouseEvent->buttons() & Qt::LeftButton)) { PHDEBUG << "resizing strip:" << mouseEvent->pos(); _settings->setStripHeight(1.0 - ((float) mouseEvent->pos().y() /(float) this->height())); } break; } case QEvent::MouseButtonDblClick: /// - Double mouse click toggle fullscreen mode if(sender == this) toggleFullScreen(); break; case QEvent::MouseButtonRelease: PHDEBUG << "end resizing strip"; _resizingStrip = false; break; case QEvent::MouseButtonPress: { QMouseEvent *mouseEvent = (QMouseEvent*)event; if((sender == this) && (mouseEvent->buttons() & Qt::RightButton)) { /// - Right mouse click on the video open the video file dialog. if(mouseEvent->y() < this->height() * (1.0f - _settings->stripHeight())) on_actionOpen_Video_triggered(); else /// - Left mouse click on the strip open the strip file dialog. on_actionOpen_triggered(); return true; } float stripHeight = this->height() * _settings->stripHeight(); if((mouseEvent->pos().y() > (this->height() - stripHeight) - 10) && (mouseEvent->pos().y() < (this->height() - stripHeight) + 10)) { PHDEBUG << "start resizing strip"; _resizingStrip = true; } break; } case QEvent::KeyPress: { QKeyEvent *keyEvent = (QKeyEvent*)event; if(keyEvent->key() == Qt::Key_Space) { on_actionPlay_pause_triggered(); } break; } default: break; } return PhDocumentWindow::eventFilter(sender, event); }