void webview::contextMenuEvent(QContextMenuEvent * event) { QMenu * menu = new QMenu(); menu->setVisible(true); QWebHitTestResult element = this->page()->mainFrame()->hitTestContent(event->pos()); if(!element.linkUrl().isEmpty()) { QAction * newtab = this->pageAction(QWebPage::OpenLinkInNewWindow); newtab->setText(tr("open link in new tab")); menu->addAction(newtab); menu->addAction(this->pageAction(QWebPage::DownloadLinkToDisk)); menu->addAction(this->pageAction(QWebPage::CopyLinkToClipboard)); } if(!element.imageUrl().isEmpty()) { menu->addAction(this->pageAction(QWebPage::DownloadImageToDisk)); menu->addAction(this->pageAction(QWebPage::CopyImageToClipboard)); menu->addAction(this->pageAction(QWebPage::CopyImageUrlToClipboard)); QAction * newimage = this->pageAction(QWebPage::OpenImageInNewWindow); newimage->setText(tr("open image in new tab")); menu->addAction(newimage); } if(!page()->selectedText().isEmpty()) { menu->addAction(this->pageAction(QWebPage::Copy)); menu->addAction(this->pageAction(QWebPage::Cut)); menu->addAction(this->pageAction(QWebPage::Paste)); menu->addAction(this->pageAction(QWebPage::Undo)); menu->addAction(this->pageAction(QWebPage::Redo)); menu->addAction(this->pageAction(QWebPage::SelectAll)); } if(element.element().tagName().toLower() == "input" && element.element().attribute(QLatin1String("type")).toLower() == "text") { menu->addAction(this->pageAction(QWebPage::SelectAll)); menu->addAction(this->pageAction(QWebPage::Paste)); menu->addAction(this->pageAction(QWebPage::SetTextDirectionLeftToRight)); menu->addAction(this->pageAction(QWebPage::SetTextDirectionRightToLeft)); menu->addAction(this->pageAction(QWebPage::SetTextDirectionDefault)); menu->addAction(this->pageAction(QWebPage::MoveToNextWord)); } if(!element.isNull()) { menu->addAction(this->pageAction(QWebPage::Back)); menu->addAction(this->pageAction(QWebPage::Forward)); menu->addAction(this->pageAction(QWebPage::Reload)); menu->addAction(this->pageAction(QWebPage::Stop)); menu->addAction(this->pageAction(QWebPage::InspectElement)); } menu->exec(event->globalPos()); }
// needed for the spellCheck static QVariant execJScript(QWebHitTestResult result, const QString& script) { QWebElement element(result.element()); if (element.isNull()) return QVariant(); return element.evaluateJavaScript(script); }
void ClickToFlash::findElement() { if (!loadButton_) return; QPoint objectPos = page_->view()->mapFromGlobal(loadButton_->mapToGlobal(loadButton_->pos())); QWebFrame* objectFrame = page_->frameAt(objectPos); QWebHitTestResult hitResult; QWebElement hitElement; if (objectFrame) { hitResult = objectFrame->hitTestContent(objectPos); hitElement = hitResult.element(); } if (!hitElement.isNull() && (hitElement.tagName().compare("embed", Qt::CaseInsensitive) == 0 || hitElement.tagName().compare("object", Qt::CaseInsensitive) == 0)) { element_ = hitElement; return; } // HitTestResult failed, trying to find element by src // attribute in elements at all frames on page (less accurate) QList<QWebFrame*> frames; frames.append(objectFrame); frames.append(page_->mainFrame()); while (!frames.isEmpty()) { QWebFrame* frame = frames.takeFirst(); if (!frame) { continue; } QWebElement docElement = frame->documentElement(); QWebElementCollection elements; elements.append(docElement.findAll(QLatin1String("embed"))); elements.append(docElement.findAll(QLatin1String("object"))); foreach (const QWebElement &element, elements) { if (!checkElement(element) && !checkUrlOnElement(element)) { continue; } element_ = element; return; } frames += frame->childFrames(); } }
void Speller::populateContextMenu(QMenu* menu, const QWebHitTestResult &hitTest) { m_element = hitTest.element(); if (!m_enabled || m_element.isNull() || m_element.attribute(QLatin1String("type")) == QLatin1String("password")) { return; } const QString text = m_element.evaluateJavaScript("this.value").toString(); const int pos = m_element.evaluateJavaScript("this.selectionStart").toInt() + 1; QTextBoundaryFinder finder = QTextBoundaryFinder(QTextBoundaryFinder::Word, text); finder.setPosition(pos); m_startPos = finder.toPreviousBoundary(); m_endPos = finder.toNextBoundary(); const QString &word = text.mid(m_startPos, m_endPos - m_startPos).trimmed(); if (!isValidWord(word) || !isMisspelled(word)) { return; } const int limit = 6; QStringList suggests = suggest(word); int count = suggests.count() > limit ? limit : suggests.count(); QFont boldFont = menu->font(); boldFont.setBold(true); for (int i = 0; i < count; ++i) { QAction* act = menu->addAction(suggests.at(i), this, SLOT(replaceWord())); act->setData(suggests.at(i)); act->setFont(boldFont); } if (count == 0) { menu->addAction(tr("No suggestions"))->setEnabled(false); } menu->addAction(tr("Add to dictionary"), this, SLOT(addToDictionary()))->setData(word); menu->addSeparator(); }
void PIM_Handler::populateWebViewMenu(QMenu* menu, WebView* view, const QWebHitTestResult &hitTest) { m_view = view; m_element = hitTest.element(); if (!hitTest.isContentEditable()) { return; } if (!m_loaded) { loadSettings(); } QMenu* pimMenu = new QMenu(tr("Insert Personal Information")); pimMenu->setIcon(QIcon(":/PIM/data/PIM.png")); if (!m_allInfo[PI_FirstName].isEmpty() && !m_allInfo[PI_LastName].isEmpty()) { const QString fullname = m_allInfo[PI_FirstName] + " " + m_allInfo[PI_LastName]; QAction* action = pimMenu->addAction(fullname, this, SLOT(pimInsert())); action->setData(fullname); } for (int i = 0; i < PI_Max; ++i) { const QString info = m_allInfo[PI_Type(i)]; if (info.isEmpty()) { continue; } QAction* action = pimMenu->addAction(info, this, SLOT(pimInsert())); action->setData(info); action->setStatusTip(m_translations[PI_Type(i)]); } pimMenu->addSeparator(); pimMenu->addAction(tr("Edit"), this, SLOT(showSettings())); menu->addMenu(pimMenu); menu->addSeparator(); }
void WebView::contextMenuEvent(QContextMenuEvent *event) { QMenu *menu = new QMenu(this); QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos()); if (!r.linkUrl().isEmpty()) { QAction *newWindowAction = menu->addAction(tr("Open in New &Window"), this, SLOT(openActionUrlInNewWindow())); newWindowAction->setData(r.linkUrl()); QAction *newTabAction = menu->addAction(tr("Open in New &Tab"), this, SLOT(openActionUrlInNewTab())); newTabAction->setData(r.linkUrl()); menu->addSeparator(); menu->addAction(tr("Save Lin&k"), this, SLOT(downloadLinkToDisk())); menu->addAction(tr("&Bookmark This Link"), this, SLOT(bookmarkLink()))->setData(r.linkUrl()); menu->addSeparator(); if (!page()->selectedText().isEmpty()) menu->addAction(pageAction(QWebPage::Copy)); menu->addAction(tr("&Copy Link Location"), this, SLOT(copyLinkToClipboard())); } if (!r.imageUrl().isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); QAction *newWindowAction = menu->addAction(tr("Open Image in New &Window"), this, SLOT(openActionUrlInNewWindow())); newWindowAction->setData(r.imageUrl()); QAction *newTabAction = menu->addAction(tr("Open Image in New &Tab"), this, SLOT(openActionUrlInNewTab())); newTabAction->setData(r.imageUrl()); menu->addSeparator(); menu->addAction(tr("&Save Image"), this, SLOT(downloadImageToDisk())); menu->addAction(tr("&Copy Image"), this, SLOT(copyImageToClipboard())); menu->addAction(tr("C&opy Image Location"), this, SLOT(copyImageLocationToClipboard()))->setData(r.imageUrl().toString()); menu->addSeparator(); menu->addAction(tr("Block Image"), this, SLOT(blockImage()))->setData(r.imageUrl().toString()); } if (!page()->selectedText().isEmpty()) { if (menu->isEmpty()) { menu->addAction(pageAction(QWebPage::Copy)); } else { menu->addSeparator(); } QMenu *searchMenu = menu->addMenu(tr("Search with...")); QList<QString> list = ToolbarSearch::openSearchManager()->allEnginesNames(); for (int i = 0; i < list.count(); ++i) { QString name = list.at(i); OpenSearchEngine *engine = ToolbarSearch::openSearchManager()->engine(name); QAction *action = new OpenSearchEngineAction(engine, searchMenu); searchMenu->addAction(action); action->setData(name); } connect(searchMenu, SIGNAL(triggered(QAction *)), this, SLOT(searchRequested(QAction *))); } QWebElement element = r.element(); if (!element.isNull() && element.tagName().toLower() == QLatin1String("input") && element.attribute(QLatin1String("type"), QLatin1String("text")) == QLatin1String("text")) { if (menu->isEmpty()) { menu->addAction(pageAction(QWebPage::Copy)); } else { menu->addSeparator(); } QVariant variant; variant.setValue(element); menu->addAction(tr("Add to the toolbar search"), this, SLOT(addSearchEngine()))->setData(variant); } if (menu->isEmpty()) { delete menu; menu = page()->createStandardContextMenu(); } else { if (page()->settings()->testAttribute(QWebSettings::DeveloperExtrasEnabled)) menu->addAction(pageAction(QWebPage::InspectElement)); } if (!menu->isEmpty()) { if (BrowserMainWindow::parentWindow(tabWidget())->menuBar()->isHidden()) { menu->addSeparator(); menu->addAction(BrowserMainWindow::parentWindow(tabWidget())->showMenuBarAction()); } menu->exec(mapToGlobal(event->pos())); delete menu; return; } delete menu; QWebView::contextMenuEvent(event); }
void WBWebTrapWebView::highliteElementAtPos ( const QPoint& pos) { mCurrentContentType = Unknown; if(page() && page()->currentFrame()) { QWebHitTestResult htr = page()->currentFrame()->hitTestContent (pos); QRect pageHtr = htr.boundingRect().translated(htr.frame()->pos()); QRect updateRect = mWebViewElementRect.united(pageHtr); updateRect = updateRect.adjusted(-8, -8, 8, 8); mDomElementRect = htr.boundingRect(); if (!htr.pixmap().isNull()) { mCurrentContentType = Image; qDebug() << "found pixmap at " << htr.boundingRect(); } else { QWebElement element = htr.element(); QString tagName = element.tagName().toLower(); if (tagName == "object" || tagName == "embed") { mCurrentContentType = ObjectOrEmbed; } else if ((tagName == "input") || (tagName == "textarea")) { QString ec = potentialEmbedCodeAtPos(pos); if (ec.length() > 0) { qDebug() << "found input data \n\n" << ec; mCurrentContentType = Input; } } else { QString tagName = htr.element().tagName(); QString id = htr.element().attribute("id", ""); QWebElement el = htr.element(); QString idSelector = tagName + "#" + id; bool idSuccess = (el == el.document().findFirst(idSelector)); if (idSuccess) { mElementQuery = idSelector; mCurrentContentType = ElementByQuery; } else { //bool isValid = true; QWebElement elParent = el.parent(); QWebElement currentEl = el; QString path = tagName; QStringList pathElements; do { QWebElement someSibling = elParent.firstChild(); int index = 0; bool foundIndex = false; do { if (someSibling.tagName() == currentEl.tagName()) { if (someSibling == currentEl) { foundIndex = true; } else index++; } someSibling = someSibling.nextSibling(); } while(!someSibling.isNull() && !foundIndex); QString part; if (index > 0) part = QString("%1:nth-child(%2)").arg(currentEl.tagName()).arg(index); else part = currentEl.tagName(); pathElements.insert(0, part); currentEl = elParent; elParent = elParent.parent(); } while(!elParent.isNull()); //QString idSelector = tagName + "#" + id; QString treeSelector = pathElements.join(" > "); mElementQuery = treeSelector; mCurrentContentType = ElementByQuery; //bool treeSuccess = (el == el.document().findFirst(treeSelector)); //qDebug() << "----------------------------"; //qDebug() << idSuccess << idSelector; //qDebug() << treeSuccess << treeSelector; } } } update(updateRect); } }
void MainWindow::editorContextMenuRequested ( const QPoint & pos ) { QString guid = getCurrentNoteGuid(); if (guid == "main") return; QWebHitTestResult element = ui->editor->page()->mainFrame()->hitTestContent(pos); if (element.isNull()) return; QStringList classes = allClasses(element.element()); if (classes.contains("pdfarea")) return; QMenu * menu = new QMenu(ui->editor); menu->addAction(ui->editor->pageAction(QWebPage::SelectAll)); if (element.isContentSelected()) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::Copy)); if (element.isContentEditable()) { menu->addAction(ui->editor->pageAction(QWebPage::Cut)); menu->addAction(ui->editor->pageAction(QWebPage::Paste)); menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::ToggleBold)); menu->addAction(ui->editor->pageAction(QWebPage::ToggleItalic)); menu->addAction(ui->editor->pageAction(QWebPage::ToggleUnderline)); } } if(!element.imageUrl().isEmpty() && (element.imageUrl().scheme() != "qrc")) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::DownloadImageToDisk)); menu->addAction(ui->editor->pageAction(QWebPage::CopyImageToClipboard)); if (element.imageUrl().scheme() == "http" || element.imageUrl().scheme() == "https") menu->addAction(ui->editor->pageAction(QWebPage::CopyImageUrlToClipboard)); QAction * openImage = new QAction(this); openImage->setText("Open Image"); openImage->setObjectName("openImage"); menu->addAction(openImage); if (JS("editMode").toBool()) { menu->addSeparator(); QAction * deleteImage = new QAction(this); deleteImage->setText("Delete Image"); deleteImage->setObjectName("deleteImage"); deleteImage->setIcon(QIcon::fromTheme("edit-delete")); menu->addAction(deleteImage); if (element.imageUrl().scheme() != "resource") { QAction * saveLocally = new QAction(this); saveLocally->setText("Save Locally"); saveLocally->setObjectName("saveLocally"); menu->addAction(saveLocally); } } } if (!element.linkUrl().isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(ui->editor->pageAction(QWebPage::CopyLinkToClipboard)); if (element.isContentEditable()) { QAction * deleteURL = new QAction(this); deleteURL->setText("Remove Link"); deleteURL->setObjectName("deleteURL"); menu->addAction(deleteURL); } } if (element.isContentEditable() && !element.isContentSelected() && element.imageUrl().isEmpty()) { Speller *speller = Speller::GetInstance(); if (speller->initialized()) { QHash<QString, QString> languages = speller->availableLanguages(); if (!languages.isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); QAction* act = menu->addAction(tr("Check &Spelling")); act->setCheckable(true); act->setChecked(speller->isEnabled()); connect(act, SIGNAL(triggered(bool)), speller, SLOT(setEnabled(bool))); if (speller->isEnabled()) { QString word = JS(QString("getSpellingWord(%1,%2);").arg(pos.x()).arg(pos.y())).toString(); if (!word.isEmpty() && speller->isMisspelled(word)) { QStringList wordsList = speller->suggest(word); QFont boldFont = menu->font(); boldFont.setBold(true); QActionGroup *suggestGroup = new QActionGroup(menu); QString suggest; foreach(suggest, wordsList) { QAction* act = menu->addAction(suggest); act->setFont(boldFont); act->setData(suggest); suggestGroup->addAction(act); } connect(suggestGroup, SIGNAL(triggered(QAction*)), this, SLOT(replaceWord(QAction*))); }
bool MyWebView::eventFilter(QObject *watched, QEvent *event) { if (!m_boolEnableEvtProcess) { return false; } if (event->type() == QEvent::MouseMove) { QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); QWebView *view = dynamic_cast<QWebView*>(watched); QPoint pos = view->mapFromGlobal(mouseEvent->globalPos()); QWebFrame *frame = view->page()->frameAt(mouseEvent->pos()); if (frame!=NULL) { QWebHitTestResult hitTestResult = frame->hitTestContent(pos); // if the hovered elem is not the same as the previously hovered if (hitTestResult.element() != m_old_hover_element) { QWebElement elemCurrent = hitTestResult.element(); // if dragging, overwrite with closer WContainer if (m_boolIsDraggingWidget) { elemCurrent = FindCloserContainer(elemCurrent); } if (!elemCurrent.isNull()) { // Change color ChangeHoveredElemColor(elemCurrent); // Message to print m_strCurrentElemId = elemCurrent.attribute("id"); // Emit message QStringList strlistClasses = elemCurrent.classes(); strlistClasses.removeAll(g_strHighlightClassName); Q_EMIT mouseMovedOverElem(m_strCurrentElemId, strlistClasses.join(' ')); } } } } else if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); if (mouseEvent->button() == Qt::LeftButton) { QWebView *view = dynamic_cast<QWebView*>(watched); QPoint pos = view->mapFromGlobal(mouseEvent->globalPos()); QWebFrame *frame = view->page()->frameAt(mouseEvent->pos()); if (frame != NULL) { QWebHitTestResult hitTestResult = frame->hitTestContent(pos); QWebElement welemTemp = hitTestResult.element(); QWebElement elemCurrent = FindCloserWidget(welemTemp); // if the clicked elem is not the same as the previously clicked if (elemCurrent != m_old_click_element) { // Change color ChangeClickedElemColor(elemCurrent); // Message to print m_strCurrentElemId = elemCurrent.attribute("id"); // Emit message Q_EMIT mouseLeftClickedOverElem(m_strCurrentElemId); } } } } return false; }
void ClickToFlash::findElement() { if (!m_toolButton) { return; } QWidget* parent = parentWidget(); QWebView* view = 0; while (parent) { if (QWebView* aView = qobject_cast<QWebView*>(parent)) { view = aView; break; } parent = parent->parentWidget(); } if (!view) { return; } QPoint objectPos = view->mapFromGlobal(m_toolButton->mapToGlobal(m_toolButton->pos())); QWebFrame* objectFrame = view->page()->frameAt(objectPos); QWebHitTestResult hitResult; QWebElement hitElement; if (objectFrame) { hitResult = objectFrame->hitTestContent(objectPos); hitElement = hitResult.element(); } if (!hitElement.isNull() && (hitElement.tagName().compare("embed", Qt::CaseInsensitive) == 0 || hitElement.tagName().compare("object", Qt::CaseInsensitive) == 0)) { m_element = hitElement; return; } // HitTestResult failed, trying to find element by src // attribute in elements at all frames on page (less accurate) QList<QWebFrame*> frames; frames.append(objectFrame); m_mainFrame = view->page()->mainFrame(); frames.append(m_mainFrame); while (!frames.isEmpty()) { QWebFrame* frame = frames.takeFirst(); if (!frame) { continue; } QWebElement docElement = frame->documentElement(); QWebElementCollection elements; elements.append(docElement.findAll(QLatin1String("embed"))); elements.append(docElement.findAll(QLatin1String("object"))); foreach(const QWebElement & element, elements) { if (!checkElement(element) && !checkUrlOnElement(element)) { continue; } m_element = element; return; } frames += frame->childFrames(); } }
void Videoner_Handler::populateWebViewMenu(QMenu* menu, WebView* view, const QWebHitTestResult &r) { m_view = view; if (m_pageyt) { QRegExp rx1("v=([^&]+)|youtu.be/([^&]+)|y2u.be/([^&]+)|youtube.com/embed/([^&]+)"); QString videoId1; rx1.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx1.cap(i).isEmpty()) { videoId1 = rx1.cap(i); break; } } if (videoId1.isEmpty()) { rx1.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx1.cap(i).isEmpty()) { videoId1 = rx1.cap(i); break; } } } if (!videoId1.isEmpty()) { QString videoPage1; videoPage1 = "http://www.youtube.com/watch?v=" + videoId1; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, (m_sepyth ? SLOT(startExternalHandlerYt()) : SLOT(startExternalHandler())))->setData(videoPage1); } } if (m_pagevm) { QRegExp rx2("://vimeo.com/([^d]{8})"); QString videoId2; rx2.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx2.cap(i).isEmpty()) { videoId2 = rx2.cap(i); break; } } if (videoId2.isEmpty()) { rx2.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx2.cap(i).isEmpty()) { videoId2 = rx2.cap(i); break; } } } if (!videoId2.isEmpty()) { QString videoPage2; videoPage2 = "http://vimeo.com/" + videoId2; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage2); } } if (m_pagell) { QRegExp rx3("www.liveleak.com/view?i=([a-z0-9]{3})_([^&]+)"); QString videoId3; rx3.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx3.cap(i).isEmpty()) { videoId3 = rx3.cap(i); break; } } if (videoId3.isEmpty()) { rx3.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx3.cap(i).isEmpty()) { videoId3 = rx3.cap(i); break; } } } if (!videoId3.isEmpty()) { QString videoPage3; videoPage3 = "http://www.liveleak.com/view?i=" + videoId3; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage3); } } if (m_pagemc) { QRegExp rx4("www.metacafe.com/watch/([^d]+)/([^&]+)"); QString videoId4; rx4.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx4.cap(i).isEmpty()) { videoId4 = rx4.cap(i); break; } } if (videoId4.isEmpty()) { rx4.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx4.cap(i).isEmpty()) { videoId4 = rx4.cap(i); break; } } } if (!videoId4.isEmpty()) { QString videoPage4; videoPage4 = "http://www.metacafe.com/watch/" + videoId4; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage4); } } if (m_pagedm) { QRegExp rx5("dailymotion.com/video/([a-z0-9]+_[^&]+)"); QString videoId5; rx5.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx5.cap(i).isEmpty()) { videoId5 = rx5.cap(i); break; } } if (videoId5.isEmpty()) { rx5.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx5.cap(i).isEmpty()) { videoId5 = rx5.cap(i); break; } } } if (!videoId5.isEmpty()) { QString videoPage5; videoPage5 = "http://www.dailymotion.com/video/" + videoId5; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage5); } } if (m_pagebr) { QRegExp rx6("www.break.com/video/([^&]+)"); QString videoId6; rx6.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx6.cap(i).isEmpty()) { videoId6 = rx6.cap(i); break; } } if (videoId6.isEmpty()) { rx6.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx6.cap(i).isEmpty()) { videoId6 = rx6.cap(i); break; } } } if (!videoId6.isEmpty()) { QString videoPage6; videoPage6 = "www.break.com/video/" + videoId6; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage6); } } if (m_pagehu) { QRegExp rx7("www.hulu.com/watch/([^d]+)"); QString videoId7; rx7.indexIn(r.linkUrl().toString()); for (int i = 1; i < 4; ++i) { if (!rx7.cap(i).isEmpty()) { videoId7 = rx7.cap(i); break; } } if (videoId7.isEmpty()) { rx7.indexIn(view->url().toString()); for (int i = 1; i < 4; ++i) { if (!rx7.cap(i).isEmpty()) { videoId7 = rx7.cap(i); break; } } } if (!videoId7.isEmpty()) { QString videoPage7; videoPage7 = "http://www.hulu.com/watch/" + videoId7; menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage7); } } if (m_medel) { if (r.element().tagName().toLower() == QLatin1String("video") || r.element().tagName().toLower() == QLatin1String("audio")) { QUrl mediaLink = r.element().evaluateJavaScript("this.currentSrc").toUrl(); menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, (m_sepmedel ? SLOT(startExternalHandlerMed()) : SLOT(startExternalHandler())))->setData(mediaLink); } } }