bool DockedMdiArea::event(QEvent *event) { // Listen for desktop file manager drop and emit a signal once a file is // dropped. switch (event->type()) { case QEvent::DragEnter: { QDragEnterEvent *e = static_cast<QDragEnterEvent*>(event); if (!uiFiles(e->mimeData()).empty()) { e->acceptProposedAction(); return true; } } break; case QEvent::Drop: { QDropEvent *e = static_cast<QDropEvent*>(event); const QStringList files = uiFiles(e->mimeData()); const QStringList::const_iterator cend = files.constEnd(); for (QStringList::const_iterator it = files.constBegin(); it != cend; ++it) { emit fileDropped(*it); } e->acceptProposedAction(); return true; } break; default: break; } return QMdiArea::event(event); }
bool FormFile::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->lvServer) { if(event->type() == QEvent::DragEnter) { QDragEnterEvent* dee = dynamic_cast<QDragEnterEvent*>(event); dee->acceptProposedAction(); return true; } else if(event->type() == QEvent::Drop) { QDropEvent* de = dynamic_cast<QDropEvent*>(event); QList<QUrl>urls = de->mimeData()->urls(); if(urls.isEmpty()) { return true; } QString path = urls.first().toLocalFile(); //上传文件 updateFile(path, path.split("/").last()); return true; } } return QWidget::eventFilter(watched, event); }
bool CloudView::eventFilter(QObject *obj, QEvent *event) { if (obj == mHeader) { static QPoint oldPos; if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *ev = (QMouseEvent *)event; oldPos = ev->globalPos(); return true; } else if (event->type() == QEvent::MouseMove) { QMouseEvent *ev = (QMouseEvent *)event; const QPoint delta = ev->globalPos() - oldPos; MainWindow *win = seafApplet->mainWindow(); win->move(win->x() + delta.x(), win->y() + delta.y()); oldPos = ev->globalPos(); return true; } } else if (obj == mDropArea) { if (event->type() == QEvent::DragEnter) { QDragEnterEvent *ev = (QDragEnterEvent *)event; if (ev->mimeData()->hasUrls() && ev->mimeData()->urls().size() == 1) { const QUrl url = ev->mimeData()->urls().at(0); if (url.scheme() == "file") { QString path = url.toLocalFile(); #if defined(Q_OS_MAC) && (QT_VERSION <= QT_VERSION_CHECK(5, 4, 0)) path = utils::mac::fix_file_id_url(path); #endif if (QFileInfo(path).isDir()) { ev->acceptProposedAction(); } } } return true; } else if (event->type() == QEvent::Drop) { QDropEvent *ev = (QDropEvent *)event; const QUrl url = ev->mimeData()->urls().at(0); QString path = url.toLocalFile(); #if defined(Q_OS_MAC) && (QT_VERSION <= QT_VERSION_CHECK(5, 4, 0)) path = utils::mac::fix_file_id_url(path); #endif ev->setDropAction(Qt::CopyAction); ev->accept(); showCreateRepoDialog(path); return true; } } return QWidget::eventFilter(obj, event); }
bool MainWindow::eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::DragEnter) { QDragEnterEvent *dragEvent = (QDragEnterEvent*)event; // accept only folders QList<QUrl> urls = dragEvent->mimeData()->urls(); for (const QUrl url: urls) { if (url.isLocalFile()) { QFileInfo info(url.toLocalFile()); if (info.isFile()) { return false; } } } dragEvent->setDropAction(Qt::LinkAction); dragEvent->acceptProposedAction(); return true; } else if (event->type() == QEvent::Drop) { QList<QUrl> urls = ((QDropEvent*)event)->mimeData()->urls(); QStringList files; for (const QUrl url: urls) { if (url.isLocalFile()) { QFileInfo info(url.toLocalFile()); if (info.isFile()) files.append(url.toLocalFile()); else if (info.isDir()) filesList->addFolder(info.absoluteFilePath()); } } filesList->addFiles(files); return true; } return QMainWindow::eventFilter(object, event); }
bool CloudView::eventFilter(QObject *obj, QEvent *event) { if (obj == mHeader) { static QPoint oldPos; if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *ev = (QMouseEvent *)event; oldPos = ev->globalPos(); return true; } else if (event->type() == QEvent::MouseMove) { QMouseEvent *ev = (QMouseEvent *)event; const QPoint delta = ev->globalPos() - oldPos; MainWindow *win = seafApplet->mainWindow(); win->move(win->x() + delta.x(), win->y() + delta.y()); oldPos = ev->globalPos(); return true; } } else if (obj == mDropArea) { if (event->type() == QEvent::DragEnter) { QDragEnterEvent *ev = (QDragEnterEvent *)event; if (ev->mimeData()->hasUrls() && ev->mimeData()->urls().size() == 1) { const QUrl url = ev->mimeData()->urls().at(0); if (url.isLocalFile()) { QString path = url.toLocalFile(); if (QFileInfo(path).isDir()) { ev->acceptProposedAction(); } } } return true; } else if (event->type() == QEvent::Drop) { QDropEvent *ev = (QDropEvent *)event; const QUrl url = ev->mimeData()->urls().at(0); QString path = url.toLocalFile(); showCreateRepoDialog(path); return true; } } return QWidget::eventFilter(obj, event); }
bool SessionListWidget::event(QEvent *event) { #ifndef QUTIM_MOBILE_UI if (event->type() == QEvent::ToolTip) { if (QHelpEvent *help = static_cast<QHelpEvent*>(event)) { int index = indexAt(help->pos()).row(); if (index != -1) { ChatUnit *unit = session(index)->getUnit(); ToolTip::instance()->showText(help->globalPos(), unit, this); return true; } } } else if (event->type() == QEvent::DragEnter) { QDragEnterEvent *dragEvent = static_cast<QDragEnterEvent*>(event); if (const MimeObjectData *data = qobject_cast<const MimeObjectData*>(dragEvent->mimeData())) { ChatUnit *u = qobject_cast<ChatUnit*>(data->object()); if (u) dragEvent->acceptProposedAction(); } return true; } else if (event->type() == QEvent::Drop) { QDropEvent *dropEvent = static_cast<QDropEvent*>(event); if (const MimeObjectData *mimeData = qobject_cast<const MimeObjectData*>(dropEvent->mimeData())) { if (ChatUnit *u = qobject_cast<ChatUnit*>(mimeData->object())) { ChatLayerImpl::get(u,true)->activate(); dropEvent->setDropAction(Qt::CopyAction); dropEvent->accept(); return true; } } } else #endif if (event->type() == QEvent::ContextMenu) { QContextMenuEvent *ev = static_cast<QContextMenuEvent*>(event); ChatSessionImpl *s = session(row(itemAt(ev->pos()))); if(s) { s->unit()->showMenu(ev->globalPos()); return true; } } return QListWidget::event(event); }
bool EditTagDialog::eventFilter(QObject* o, QEvent* e) { if (o == ui_->art) { switch (e->type()) { case QEvent::MouseButtonRelease: cover_menu_->popup(static_cast<QMouseEvent*>(e)->globalPos()); break; case QEvent::DragEnter: { QDragEnterEvent* event = static_cast<QDragEnterEvent*>(e); if (AlbumCoverChoiceController::CanAcceptDrag(event)) { event->acceptProposedAction(); } break; } case QEvent::Drop: { const QDropEvent* event = static_cast<QDropEvent*>(e); const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); Song* song = GetFirstSelected(); const QString cover = album_cover_choice_controller_->SaveCover(song, event); if (!cover.isEmpty()) { UpdateCoverOf(*song, sel, cover); } break; } default: break; } } return false; }
bool HashBox::eventFilter(QObject* object, QEvent* event) { if (object == dropWidget) { if (event->type() == QEvent::DragEnter) { QDragEnterEvent* dragEnterEvent = static_cast<QDragEnterEvent*>(event); if (dragEnterEvent) { /* print out mimeType */ showFormats("HashBox::dragEnterEvent", dragEnterEvent->mimeData()->formats()); if (dragEnterEvent->mimeData()->hasUrls()) { std::cerr << "HashBox::dragEnterEvent() Accepting Urls" << std::endl; dragEnterEvent->acceptProposedAction(); } else { std::cerr << "HashBox::dragEnterEvent() No Urls" << std::endl; } } } else if (event->type() == QEvent::Drop) { QDropEvent* dropEvent = static_cast<QDropEvent*>(event); if (dropEvent) { if (Qt::CopyAction & dropEvent->possibleActions()) { /* print out mimeType */ showFormats("HashBox::dropEvent", dropEvent->mimeData()->formats()); QStringList files; if (dropEvent->mimeData()->hasUrls()) { std::cerr << "HashBox::dropEvent() Urls:" << std::endl; QList<QUrl> urls = dropEvent->mimeData()->urls(); QList<QUrl>::iterator uit; for (uit = urls.begin(); uit != urls.end(); ++uit) { QString localpath = uit->toLocalFile(); std::cerr << "Whole URL: " << uit->toString().toStdString() << std::endl; std::cerr << "or As Local File: " << localpath.toStdString() << std::endl; if (localpath.isEmpty() == false) { //Check that the file does exist and is not a directory QDir dir(localpath); if (dir.exists()) { std::cerr << "HashBox::dropEvent() directory not accepted." << std::endl; QMessageBox mb(tr("Drop file error."), tr("Directory can't be dropped, only files are accepted."), QMessageBox::Information, QMessageBox::Ok, 0, 0, this); mb.exec(); } else if (QFile::exists(localpath)) { files.push_back(localpath); } else { std::cerr << "HashBox::dropEvent() file does not exists."<< std::endl; QMessageBox mb(tr("Drop file error."), tr("File not found or file name not accepted."), QMessageBox::Information, QMessageBox::Ok, 0, 0, this); mb.exec(); } } } } addAttachments(files,mDefaultTransferFlags); dropEvent->setDropAction(Qt::CopyAction); dropEvent->accept(); } else { std::cerr << "HashBox::dropEvent() Rejecting uncopyable DropAction" << std::endl; } } } } // pass the event on to the parent class return QScrollArea::eventFilter(object, event); }
bool MainWindow::eventFilter(QObject *watched, QEvent *event) { switch (event->type()) { case QEvent::KeyRelease: { QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); //int mask = Qt::ControlModifier | Qt::ShiftModifier | Qt::AltModifier; //if(keyEvent->modifiers() == mask) //{ //} break; } case QEvent::DragEnter: { QDragEnterEvent *dragEnterEvent = static_cast<QDragEnterEvent*>(event); const QMimeData* mimeData = dragEnterEvent->mimeData(); // check for our needed mime type, here a file or a list of files if (!mimeData->hasUrls()) break; QList<QUrl> urlList = mimeData->urls(); for (int i = 0; i < urlList.size(); ++i) { qDebug() << urlList.at(i).toString(); if (urlList.at(i).toString().endsWith(".torrent")) { dragEnterEvent->acceptProposedAction(); return true; } } break; } case QEvent::Drop: { QDropEvent *dropEvent = static_cast<QDropEvent*>(event); const QMimeData* mimeData = dropEvent->mimeData(); // check for our needed mime type, here a file or a list of files if (!mimeData->hasUrls()) break; QStringList pathList; QList<QUrl> urlList = mimeData->urls(); // extract the local paths of the files for (int i = 0; i < urlList.size(); ++i) { pathList.append(urlList.at(i).toLocalFile()); } //addTorrents(pathList); return true; } default: break; } return QObject::eventFilter(watched, event); }
bool ClassSpaceChecker::eventFilter(QObject *object, QEvent *evt) { if(evt->type() == QEvent::FocusOut) { if(object == ui.tableWidgetResult) { ui.lineEdit_Result->setText(prevTotalResultStr_); } return QMainWindow::eventFilter(object, evt); } if(object == ui.comboBox_JarFile || object == ui.lineEdit_MapFile ) { if(evt->type() == QEvent::DragEnter) { QDragEnterEvent *e = (QDragEnterEvent*)evt; const QMimeData *mimeData = e->mimeData(); if (mimeData->hasUrls()) { int cnt = 0; QList<QUrl> urlList = mimeData->urls(); for (int i = 0; i < urlList.size(); ++i) { QString path = urlList.at(i).toLocalFile(); if( !QFileInfo(path).isFile() ) continue; if(path.indexOf(".jar", 0, Qt::CaseInsensitive) < 0 && path.indexOf(".zip", 0, Qt::CaseInsensitive) < 0 && path.indexOf(".txt", 0, Qt::CaseInsensitive) < 0 ) continue; if(urlList.size() == 1) { if(object == ui.comboBox_JarFile) { if(path.indexOf(".jar", 0, Qt::CaseInsensitive) < 0 && path.indexOf(".zip", 0, Qt::CaseInsensitive) < 0 ) continue; } else if(object == ui.lineEdit_MapFile) { if(path.indexOf(".txt", 0, Qt::CaseInsensitive) < 0) continue; } } cnt++; } if( cnt > 0 ) e->acceptProposedAction(); } qDebug() << evt << mimeData->text(); } else if(evt->type() == QEvent::DragLeave) { QDragLeaveEvent *e = (QDragLeaveEvent*)evt; e->accept(); } else if(evt->type() == QEvent::DragMove) { QDragMoveEvent *e = (QDragMoveEvent*)evt; e->acceptProposedAction(); } else if(evt->type() == QEvent::Drop) { QDropEvent *e = (QDropEvent*)evt; const QMimeData* mimeData = e->mimeData(); if (mimeData->hasUrls()) { QList<QUrl> urlList = mimeData->urls(); for (int i = 0; i < urlList.size(); ++i) { QString path = urlList.at(i).toLocalFile(); if(path.indexOf(".txt", 0, Qt::CaseInsensitive) >= 0) ui.lineEdit_MapFile->setText(path); if(path.indexOf(".jar", 0, Qt::CaseInsensitive) >= 0 || path.indexOf(".zip", 0, Qt::CaseInsensitive) >= 0) { checkAndJarFilePreset(path); } } } } } return QMainWindow::eventFilter(object, evt); }
bool MainWindow::eventFilter(QObject *watched, QEvent *event) { if (watched == ui->iconLabel) { QFileInfo file("icon_create.py"); if(!file.exists()) { trcDebug("icon_create.py does not exist!"); return false; } if (event->type() == QEvent::DragEnter) { // [[2]]: 当拖放时鼠标进入label时, label接受拖放的动作 QDragEnterEvent *dee = dynamic_cast<QDragEnterEvent *>(event); dee->acceptProposedAction(); return true; } else if (event->type() == QEvent::Drop) { // [[3]]: 当放操作发生后, 取得拖放的数据 QDropEvent *de = dynamic_cast<QDropEvent *>(event); QList<QUrl> urls = de->mimeData()->urls(); if (urls.isEmpty()) { return true; } QString path = urls.first().toLocalFile(); // [[4]]: 在label上显示拖放的图片 QImage image(path); // QImage对I/O优化过, QPixmap对显示优化 if (!image.isNull()) { ui->iconLabel->setPixmap(QPixmap::fromImage(image)); QStringList arguments; QFileInfo file(path); arguments<<"icon_create.py"<<file.absolutePath()<<file.fileName(); cmd.start("python",arguments);//非阻塞 int flag = cmd.execute("python",arguments);//阻塞 switch (flag) { case -1: ui->statusBar->showMessage("The process crashes"); break; case -2: ui->statusBar->showMessage("The process cannot be started"); default: ui->statusBar->showMessage("Icon to create success"); break; } } return true; } }else if(watched == ui->screenshotLabel){ QFileInfo file("screenshot_create.py"); if(!file.exists()) { trcDebug("screenshot_create.py does not exist!"); return false; } if (event->type() == QEvent::DragEnter) { // [[2]]: 当拖放时鼠标进入label时, label接受拖放的动作 QDragEnterEvent *dee = dynamic_cast<QDragEnterEvent *>(event); dee->acceptProposedAction(); return true; } else if (event->type() == QEvent::Drop) { // [[3]]: 当放操作发生后, 取得拖放的数据 QDropEvent *de = dynamic_cast<QDropEvent *>(event); QList<QUrl> urls = de->mimeData()->urls(); if (urls.isEmpty()) { return true; } foreach (QUrl file, urls) { QString path = file.toLocalFile(); // [[4]]: 在label上显示拖放的图片 QImage image(path); // QImage对I/O优化过, QPixmap对显示优化 if (!image.isNull()) { ui->screenshotLabel->setPixmap(QPixmap::fromImage(image)); QStringList arguments; QFileInfo file(path); arguments<<"screenshot_create.py"<<file.absolutePath()<<file.fileName(); cmd.execute("python",arguments);//非阻塞 int flag = cmd.execute("python",arguments);//阻塞 switch (flag) { case -1: ui->statusBar->showMessage("The process crashes"); break; case -2: ui->statusBar->showMessage("The process cannot be started"); default: ui->statusBar->showMessage("Icon to create success"); break; } } }