void UrlIconLabel::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() == Qt::LeftButton && (event->pos() - m_dragStartPos).manhattanLength() > QApplication::startDragDistance() && m_webView) { QDrag *drag = new QDrag(this); QMimeData *mimeData = new QMimeData; mimeData->setText(QString::fromUtf8(m_webView->url().toEncoded())); QList<QUrl> urls; urls.append(m_webView->url()); mimeData->setUrls(urls); drag->setMimeData(mimeData); drag->exec(); } }
void SettingsDialog::setHomeToCurrentPage() { BrowserMainWindow *mw = static_cast<BrowserMainWindow*>(parent()); WebView *webView = mw->currentTab(); if (webView) homeLineEdit->setText(QString::fromUtf8(webView->url().toEncoded())); }
void WebSearchBar::completeMenuWithAvailableEngines(QMenu* menu) { Q_UNUSED(menu) #if QTWEBENGINE_DISABLED WebView* view = m_window->weView(); QWebEngineFrame* frame = view->page()->mainFrame(); QWebElementCollection elements = frame->documentElement().findAll(QLatin1String("link[rel=search]")); foreach (const QWebElement &element, elements) { if (element.attribute("type") != QLatin1String("application/opensearchdescription+xml")) { continue; } QUrl url = view->url().resolved(QUrl::fromEncoded(element.attribute("href").toUtf8())); QString title = element.attribute("title"); if (url.isEmpty()) { continue; } if (title.isEmpty()) { title = view->title(); } menu->addAction(view->icon(), tr("Add %1 ...").arg(title), this, SLOT(addEngineFromAction()))->setData(url); } #endif }
SiteInfoWidget::SiteInfoWidget(QupZilla* mainClass, QWidget* parent) : LocationBarPopup(parent) , ui(new Ui::SiteInfoWidget) , p_QupZilla(mainClass) { this->setAttribute(Qt::WA_DeleteOnClose); ui->setupUi(this); setPopupAlignment(Qt::AlignLeft); WebView* view = p_QupZilla->weView(); WebPage* webPage = view->page(); QUrl url = view->url(); if (QzTools::isCertificateValid(webPage->sslCertificate())) { ui->secureLabel->setText(tr("Your connection to this site is <b>secured</b>.")); ui->secureIcon->setPixmap(QPixmap(":/icons/locationbar/accept.png")); } else { ui->secureLabel->setText(tr("Your connection to this site is <b>unsecured</b>.")); ui->secureIcon->setPixmap(QPixmap(":/icons/locationbar/warning.png")); } QString scheme = url.scheme(); QSqlQuery query; QString host = url.host(); query.prepare("SELECT sum(count) FROM history WHERE url LIKE ?"); query.addBindValue(QString("%1://%2%").arg(scheme, host)); query.exec(); if (query.next()) { int count = query.value(0).toInt(); if (count > 3) { ui->historyLabel->setText(tr("This is your <b>%1</b> visit of this site.").arg(QString::number(count) + ".")); ui->historyIcon->setPixmap(QPixmap(":/icons/locationbar/accept.png")); } else if (count == 0) { ui->historyLabel->setText(tr("You have <b>never</b> visited this site before.")); ui->historyIcon->setPixmap(QPixmap(":/icons/locationbar/warning.png")); } else { ui->historyIcon->setPixmap(QPixmap(":/icons/locationbar/warning.png")); QString text; if (count == 1) { text = tr("first"); } else if (count == 2) { text = tr("second"); } else if (count == 3) { text = tr("third"); } ui->historyLabel->setText(tr("This is your <b>%1</b> visit of this site.").arg(text)); } } connect(ui->pushButton, SIGNAL(clicked()), p_QupZilla, SLOT(showPageInfo())); }
void TabWidget::currentChanged(int index) { WebView *webView = this->webView(index); if (!webView) return; Q_ASSERT(m_locationBars->count() == count()); WebView *oldWebView = this->webView(m_locationBars->currentIndex()); if (oldWebView) { disconnect(oldWebView, SIGNAL(statusBarMessage(const QString&)), this, SIGNAL(showStatusBarMessage(const QString&))); disconnect(oldWebView->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString&)), this, SIGNAL(linkHovered(const QString&))); disconnect(oldWebView, SIGNAL(loadProgress(int)), this, SIGNAL(loadProgress(int))); } connect(webView, SIGNAL(statusBarMessage(const QString&)), this, SIGNAL(showStatusBarMessage(const QString&))); connect(webView->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString&)), this, SIGNAL(linkHovered(const QString&))); connect(webView, SIGNAL(loadProgress(int)), this, SIGNAL(loadProgress(int))); for (int i = 0; i < m_actions.count(); ++i) { WebActionMapper *mapper = m_actions[i]; mapper->updateCurrent(webView->page()); } emit setCurrentTitle(webView->title()); m_locationBars->setCurrentIndex(index); emit loadProgress(webView->progress()); emit showStatusBarMessage(webView->lastStatusBarText()); if (webView->url().isEmpty() && webView->hasFocus()) { m_locationBars->currentWidget()->setFocus(); } else if (!webView->url().isEmpty()) { webView->setFocus(); } }
SiteInfoWidget::SiteInfoWidget(QupZilla* mainClass, QWidget* parent) : QMenu(parent) , ui(new Ui::SiteInfoWidget) , p_QupZilla(mainClass) { this->setAttribute(Qt::WA_DeleteOnClose); ui->setupUi(this); WebView* view = p_QupZilla->weView(); WebPage* webPage = qobject_cast<WebPage*>(view->page()); QUrl url = view->url(); if (webPage->sslCertificate().isValid()) { ui->secureLabel->setText(tr("Your connection to this site is <b>secured</b>.")); ui->secureIcon->setPixmap(QPixmap(":/icons/locationbar/accept.png")); } else { ui->secureLabel->setText(tr("Your connection to this site is <b>unsecured</b>.")); ui->secureIcon->setPixmap(QPixmap(":/icons/locationbar/warning.png")); } QString scheme = url.scheme(); QSqlQuery query; QString host = url.host(); query.exec("SELECT sum(count) FROM history WHERE url LIKE '" + scheme + "://" + host + "%' "); if (query.next()) { int count = query.value(0).toInt(); if (count > 3) { ui->historyLabel->setText(tr("This is your <b>%1</b> visit of this site.").arg(QString::number(count) + ".")); ui->historyIcon->setPixmap(QPixmap(":/icons/locationbar/accept.png")); } else if (count == 0) { ui->historyLabel->setText(tr("You have <b>never</b> visited this site before.")); ui->historyIcon->setPixmap(QPixmap(":/icons/locationbar/warning.png")); } else { ui->historyIcon->setPixmap(QPixmap(":/icons/locationbar/warning.png")); QString text; if (count == 1) { text = tr("first"); } else if (count == 2) { text = tr("second"); } else if (count == 3) { text = tr("third"); } ui->historyLabel->setText(tr("This is your <b>%1</b> visit of this site.").arg(text)); } } connect(ui->pushButton, SIGNAL(clicked()), p_QupZilla, SLOT(showPageInfo())); #ifndef KDE // Use light color for QLabels even with Ubuntu Ambiance theme QPalette pal = palette(); pal.setColor(QPalette::WindowText, QToolTip::palette().color(QPalette::ToolTipText)); ui->historyLabel->setPalette(pal); ui->secureLabel->setPalette(pal); #endif }
bool WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type, const QByteArray& postData) { QString scheme = request.url().scheme(); if (scheme == QLatin1String("mailto") || scheme == QLatin1String("ftp")) { // QDesktopServices::openUrl(request.url()); return false; } if (IS_CRAWLER) // when crawler, we run the webapplication is the same process // make it easier for replay return QWebPage::acceptNavigationRequest(frame, request, type, postData); WebView::OpenType t = WebView::NewWebApp; WebView* view = qobject_cast<WebView*>(parent()); Q_ASSERT(view != 0); // little trick to avoid double post if (m_posted) { m_posted = false; } else if (postData.size() > 0) { m_posted = true; } // ctrl open in new tab // ctrl-shift open in new tab and select // ctrl-alt open in new window if (type == QWebPage::NavigationTypeLinkClicked && (m_keyboardModifiers & Qt::ControlModifier || m_pressedButtons == Qt::MidButton)) { bool newWindow = (m_keyboardModifiers & Qt::AltModifier); if (newWindow) { t = WebView::NewWindow; } else { bool selectNewTab = (m_keyboardModifiers & Qt::ShiftModifier); if (selectNewTab) t = WebView::NewTabSelect; else t = WebView::NewTabNoSelect; } // check and load view->loadPolicy(request, postData, t); m_keyboardModifiers = Qt::NoModifier; m_pressedButtons = Qt::NoButton; return false; } //qDebug() << "navigation request url: " << request.url(); QUrl::FormattingOptions format = QUrl::RemoveQuery | QUrl::RemoveFragment | QUrl::StripTrailingSlash; if (frame == mainFrame()) { //qDebug() << "mainFrame navigation request to " << request.url(); m_loadingUrl = request.url(); QUrl current = view->url(); bool sop = (m_loadingUrl.scheme().toLower() == current.scheme().toLower()) && (m_loadingUrl.host().toLower() == current.host().toLower()) && (m_loadingUrl.port() == current.port()); //QUrl::FormattingOptions format = QUrl::RemoveQuery | QUrl::RemoveFragment | QUrl::StripTrailingSlash; if (!sop //(view->loaded() || type == QWebPage::NavigationTypeLinkClicked) && !sop /*(m_loadingUrl.toString(format) != current.toString(format)) */) { t = WebView::NewWebApp; // check and load if (m_posted) view->loadPolicy(request, postData, t); else view->loadPolicy(request, QByteArray(), t); return false; } else { emit loadingUrl(m_loadingUrl); if ((type != NavigationTypeOther) && (type != NavigationTypeReload) && (type != NavigationTypeBackOrForward) || (view->m_userAction)) { QVariant var(m_loadingUrl.toString()); OPNET::OpNetwork::instance()->sendUIMsg(MSG_addHistoryItem, getByteArray(var)); view->m_userAction = false; } if (type == NavigationTypeBackOrForward) { //QVariant var(m_back); //OPNET::OpNetwork::instance()->sendUIMsg(MSG_navBackOrForward, getByteArray(var)); m_back = false; } } } else if(frame == 0) { t = WebView::NewTabNoSelect; // check and load view->loadPolicy(request, postData, t); return false; } // same-origin and "about:blank" navigation requests fall-through to acceptNavigationRequest else if( m_iframeHandled && (request.url().toString(format | QUrl::RemovePath) != view->url().toString(format | QUrl::RemovePath) && request.url().toString() != "about:blank")) { //qDebug() << "navigation request for sub-frame \"" << frame->frameName() << "\" to " << request.url() << " type: " << type; t = WebView::NewSubFrame; OPNET::OpNetwork::instance()->sendSysCall(MSG_EMBED_FRAME, 0, frame->frameName().toAscii()); view->loadPolicy(request, postData, t); return false; } return QWebPage::acceptNavigationRequest(frame, request, type, postData); }