1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 10:46:35 +01:00

Remove no longer used classes

This commit is contained in:
David Rosca 2015-10-06 09:52:44 +02:00
parent 6d026969f7
commit dd71761854
10 changed files with 0 additions and 1291 deletions

View File

@ -128,7 +128,6 @@ SOURCES += \
navigation/reloadstopbutton.cpp \
navigation/siteicon.cpp \
navigation/websearchbar.cpp \
#network/cabundleupdater.cpp \
network/networkmanager.cpp \
network/networkproxyfactory.cpp \
network/networkurlinterceptor.cpp \
@ -152,16 +151,12 @@ SOURCES += \
other/checkboxdialog.cpp \
other/iconchooser.cpp \
other/licenseviewer.cpp \
#other/pagescreen.cpp \
other/qzsettings.cpp \
other/siteinfo.cpp \
other/siteinfowidget.cpp \
#other/sourceviewer.cpp \
#other/sourceviewersearch.cpp \
other/statusbarmessage.cpp \
other/updater.cpp \
other/useragentmanager.cpp \
#plugins/clicktoflash.cpp \
plugins/pluginproxy.cpp \
plugins/plugins.cpp \
plugins/speeddial.cpp \
@ -322,7 +317,6 @@ HEADERS += \
navigation/reloadstopbutton.h \
navigation/siteicon.h \
navigation/websearchbar.h \
#network/cabundleupdater.h \
network/networkmanager.h \
network/networkproxyfactory.h \
network/networkurlinterceptor.h \
@ -349,16 +343,12 @@ HEADERS += \
other/checkboxdialog.h \
other/iconchooser.h \
other/licenseviewer.h \
#other/pagescreen.h \
other/qzsettings.h \
other/siteinfo.h \
other/siteinfowidget.h \
#other/sourceviewer.h \
#other/sourceviewersearch.h \
other/statusbarmessage.h \
other/updater.h \
other/useragentmanager.h \
#plugins/clicktoflash.h \
plugins/plugininterface.h \
plugins/pluginproxy.h \
plugins/plugins.h \
@ -460,10 +450,8 @@ FORMS += \
other/clearprivatedata.ui \
other/checkboxdialog.ui \
other/iconchooser.ui \
#other/pagescreen.ui \
other/siteinfo.ui \
other/siteinfowidget.ui \
other/sourceviewersearch.ui \
preferences/acceptlanguage.ui \
preferences/addacceptlanguage.ui \
preferences/autofillmanager.ui \

View File

@ -1,152 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "cabundleupdater.h"
#include "mainapplication.h"
#include "networkmanager.h"
#include "browserwindow.h"
#include "datapaths.h"
#include "qztools.h"
#include <QTimer>
#include <QDateTime>
#include <QNetworkReply>
#include <QFile>
#if QTWEBENGINE_DISABLED
CaBundleUpdater::CaBundleUpdater(NetworkManager* manager, QObject* parent)
: QObject(parent)
, m_manager(manager)
, m_progress(Start)
, m_reply(0)
, m_latestBundleVersion(0)
{
m_bundleVersionFileName = DataPaths::path(DataPaths::Config) + QL1S("/certificates/bundle_version");
m_bundleFileName = DataPaths::path(DataPaths::Config) + QL1S("/certificates/ca-bundle.crt");
m_lastUpdateFileName = DataPaths::path(DataPaths::Config) + QL1S("/certificates/last_update");
// Make sure the certificates directory exists
QDir certDir(DataPaths::path(DataPaths::Config) + QL1S("/certificates"));
if (!certDir.exists())
certDir.mkpath(certDir.absolutePath());
int updateTime = 30 * 1000;
// Check immediately on first run
if (!QFile(m_lastUpdateFileName).exists()) {
updateTime = 0;
}
QTimer::singleShot(updateTime, this, SLOT(start()));
}
void CaBundleUpdater::start()
{
QFile updateFile(m_lastUpdateFileName);
bool updateNow = false;
if (updateFile.exists()) {
if (updateFile.open(QFile::ReadOnly)) {
QDateTime updateTime = QDateTime::fromString(updateFile.readAll());
updateNow = updateTime.addDays(5) < QDateTime::currentDateTime();
}
else {
qWarning() << "CaBundleUpdater::start cannot open file for reading" << m_lastUpdateFileName;
}
}
else {
updateNow = true;
}
if (updateNow) {
m_progress = CheckLastUpdate;
QUrl url = QUrl::fromEncoded(QString(Qz::WWWADDRESS + QL1S("/certs/bundle_version")).toUtf8());
m_reply = m_manager->get(QNetworkRequest(url));
connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished()));
}
}
void CaBundleUpdater::replyFinished()
{
if (m_progress == CheckLastUpdate) {
QByteArray response = m_reply->readAll().trimmed();
m_reply->close();
m_reply->deleteLater();
if (m_reply->error() != QNetworkReply::NoError || response.isEmpty()) {
return;
}
bool ok;
m_latestBundleVersion = response.toInt(&ok);
if (!ok || m_latestBundleVersion <= 0)
return;
int currentBundleVersion = QzTools::readAllFileContents(m_bundleVersionFileName).trimmed().toInt(&ok);
if (!ok)
currentBundleVersion = 0;
QFile file(m_lastUpdateFileName);
if (!file.open(QFile::WriteOnly | QFile::Truncate)) {
qWarning() << "CaBundleUpdater::replyFinished cannot open file for writing" << m_lastUpdateFileName;
return;
}
file.write(QDateTime::currentDateTime().toString().toUtf8());
if (m_latestBundleVersion > currentBundleVersion) {
m_progress = LoadBundle;
QUrl url = QUrl::fromEncoded(QString(Qz::WWWADDRESS + QL1S("/certs/ca-bundle.crt")).toUtf8());
m_reply = m_manager->get(QNetworkRequest(url));
connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished()));
}
}
else if (m_progress == LoadBundle) {
QByteArray response = m_reply->readAll();
m_reply->close();
m_reply->deleteLater();
if (m_reply->error() != QNetworkReply::NoError || response.isEmpty()) {
return;
}
QFile file(m_bundleVersionFileName);
if (!file.open(QFile::WriteOnly | QFile::Truncate)) {
qWarning() << "CaBundleUpdater::replyFinished cannot open file for writing" << m_bundleVersionFileName;
return;
}
file.write(QByteArray::number(m_latestBundleVersion));
file.close();
file.setFileName(m_bundleFileName);
if (!file.open(QFile::WriteOnly | QFile::Truncate)) {
qWarning() << "CaBundleUpdater::replyFinished cannot open file for writing" << m_bundleFileName;
return;
}
file.write(response);
// Reload newly downloaded certificates
mApp->networkManager()->loadSettings();
}
}
#endif

View File

@ -1,61 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef CABUNDLEUPDATER_H
#define CABUNDLEUPDATER_H
#if QTWEBENGINE_DISABLED
#include <QObject>
#include "qzcommon.h"
class QNetworkReply;
class NetworkManager;
class QUPZILLA_EXPORT CaBundleUpdater : public QObject
{
Q_OBJECT
public:
explicit CaBundleUpdater(NetworkManager* manager, QObject* parent = 0);
signals:
public slots:
private slots:
void start();
void replyFinished();
private:
enum Progress { Start, CheckLastUpdate, LoadBundle };
NetworkManager* m_manager;
Progress m_progress;
QNetworkReply* m_reply;
QString m_bundleVersionFileName;
QString m_bundleFileName;
QString m_lastUpdateFileName;
int m_latestBundleVersion;
};
#endif
#endif // CABUNDLEUPDATER_H

View File

@ -1,236 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "sourceviewer.h"
#include "tabbedwebview.h"
#include "htmlhighlighter.h"
#include "sourceviewersearch.h"
#include "qztools.h"
#include "enhancedmenu.h"
#include "plaineditwithlines.h"
#include <QBoxLayout>
#include <QMenuBar>
#include <QStatusBar>
#include <QFileDialog>
#include <QMessageBox>
#include <QInputDialog>
#include <QTimer>
#if QTWEBENGINE_DISABLED
SourceViewer::SourceViewer(QWebEngineFrame* frame, const QString &selectedHtml)
: QWidget(0)
, m_frame(frame)
, m_selectedHtml(selectedHtml)
{
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle(tr("Source of ") + QzTools::frameUrl(frame).toString());
m_layout = new QBoxLayout(QBoxLayout::TopToBottom, this);
m_sourceEdit = new PlainEditWithLines(this);
m_sourceEdit->setObjectName("sourceviewer-textedit");
m_sourceEdit->setReadOnly(true);
m_sourceEdit->setUndoRedoEnabled(false);
m_statusBar = new QStatusBar(this);
m_statusBar->showMessage(QzTools::frameUrl(frame).toString());
QMenuBar* menuBar = new QMenuBar(this);
m_layout->addWidget(m_sourceEdit);
m_layout->addWidget(m_statusBar);
m_layout->setContentsMargins(0, 0, 0, 0);
m_layout->setSpacing(0);
m_layout->setMenuBar(menuBar);
QFont font;
font.setFamily("Tahoma");
font.setFixedPitch(true);
font.setPointSize(10);
m_sourceEdit->setFont(font);
new HtmlHighlighter(m_sourceEdit->document());
resize(650, 600);
QzTools::centerWidgetToParent(this, frame->page()->view());
QMenu* menuFile = new QMenu(tr("File"));
menuFile->addAction(tr("Load in page"), this, SLOT(loadInPage()));
menuFile->addAction(QIcon::fromTheme("document-save"), tr("Save as..."), this, SLOT(save()))->setShortcut(QKeySequence("Ctrl+S"));
menuFile->addSeparator();
menuFile->addAction(QIcon::fromTheme("window-close"), tr("Close"), this, SLOT(close()))->setShortcut(QKeySequence("Ctrl+W"));
menuBar->addMenu(menuFile);
QMenu* menuEdit = new QMenu(tr("Edit"));
m_actionUndo = menuEdit->addAction(QIcon::fromTheme("edit-undo"), tr("Undo"), m_sourceEdit, SLOT(undo()));
m_actionRedo = menuEdit->addAction(QIcon::fromTheme("edit-redo"), tr("Redo"), m_sourceEdit, SLOT(redo()));
menuEdit->addSeparator();
m_actionCut = menuEdit->addAction(QIcon::fromTheme("edit-cut"), tr("Cut"), m_sourceEdit, SLOT(cut()));
m_actionCopy = menuEdit->addAction(QIcon::fromTheme("edit-copy"), tr("Copy"), m_sourceEdit, SLOT(copy()));
m_actionPaste = menuEdit->addAction(QIcon::fromTheme("edit-paste"), tr("Paste"), m_sourceEdit, SLOT(paste()));
menuEdit->addSeparator();
menuEdit->addAction(QIcon::fromTheme("edit-select-all"), tr("Select All"), m_sourceEdit, SLOT(selectAll()))->setShortcut(QKeySequence("Ctrl+A"));
menuEdit->addAction(QIcon::fromTheme("edit-find"), tr("Find"), this, SLOT(findText()))->setShortcut(QKeySequence("Ctrl+F"));
menuEdit->addSeparator();
menuEdit->addAction(QIcon::fromTheme("go-jump"), tr("Go to Line..."), this, SLOT(goToLine()))->setShortcut(QKeySequence("Ctrl+L"));
menuBar->addMenu(menuEdit);
m_actionUndo->setShortcut(QKeySequence("Ctrl+Z"));
m_actionRedo->setShortcut(QKeySequence("Ctrl+Shift+Z"));
m_actionCut->setShortcut(QKeySequence("Ctrl+X"));
m_actionCopy->setShortcut(QKeySequence("Ctrl+C"));
m_actionPaste->setShortcut(QKeySequence("Ctrl+V"));
QMenu* menuView = new QMenu(tr("View"));
menuView->addAction(QIcon::fromTheme(QSL("view-refresh")), tr("Reload"), this, SLOT(reload()))->setShortcut(QKeySequence("F5"));
menuView->addSeparator();
menuView->addAction(tr("Editable"), this, SLOT(setTextEditable()))->setCheckable(true);
menuView->addAction(tr("Word Wrap"), this, SLOT(setTextWordWrap()))->setCheckable(true);
menuView->actions().at(3)->setChecked(true);
menuBar->addMenu(menuView);
connect(m_sourceEdit, SIGNAL(copyAvailable(bool)), this, SLOT(copyAvailable(bool)));
connect(m_sourceEdit, SIGNAL(redoAvailable(bool)), this, SLOT(redoAvailable(bool)));
connect(m_sourceEdit, SIGNAL(undoAvailable(bool)), this, SLOT(undoAvailable(bool)));
connect(menuEdit, SIGNAL(aboutToShow()), this, SLOT(pasteAvailable()));
QTimer::singleShot(0, this, SLOT(loadSource()));
}
void SourceViewer::copyAvailable(bool yes)
{
m_actionCopy->setEnabled(yes);
m_actionCut->setEnabled(yes);
}
void SourceViewer::redoAvailable(bool available)
{
m_actionRedo->setEnabled(available);
}
void SourceViewer::undoAvailable(bool available)
{
m_actionUndo->setEnabled(available);
}
void SourceViewer::pasteAvailable()
{
m_actionPaste->setEnabled(m_sourceEdit->canPaste());
}
void SourceViewer::loadInPage()
{
if (m_frame) {
m_frame.data()->setHtml(m_sourceEdit->toPlainText(), m_frame.data()->baseUrl());
m_statusBar->showMessage(tr("Source loaded in page"));
}
else {
m_statusBar->showMessage(tr("Cannot load in page. Page has been closed."));
}
}
void SourceViewer::loadSource()
{
m_actionUndo->setEnabled(false);
m_actionRedo->setEnabled(false);
m_actionCut->setEnabled(false);
m_actionCopy->setEnabled(false);
m_actionPaste->setEnabled(false);
QString html = m_frame.data()->toHtml();
// Remove AdBlock element hiding rules
html.remove(QzRegExp("<style type=\"text/css\">\n/\\* AdBlock for QupZilla \\*/\n.*\\{display:none !important;\\}[\n]*</style>"));
m_sourceEdit->setPlainText(html);
// Highlight selectedHtml
if (!m_selectedHtml.isEmpty()) {
m_sourceEdit->find(m_selectedHtml, QTextDocument::FindWholeWords);
}
m_sourceEdit->setShowingCursor(true);
}
void SourceViewer::save()
{
QString filePath = QzTools::getSaveFileName("SourceViewer-Save", this, tr("Save file..."), QDir::homePath() + "/source_code.html");
if (filePath.isEmpty()) {
return;
}
QFile file(filePath);
if (!file.open(QFile::WriteOnly)) {
QMessageBox::critical(this, tr("Error!"), tr("Cannot write to file!"));
m_statusBar->showMessage(tr("Error writing to file"));
return;
}
file.write(m_sourceEdit->toPlainText().toUtf8());
file.close();
m_statusBar->showMessage(tr("Source successfully saved"));
}
void SourceViewer::findText()
{
if (m_layout->count() > 2) {
SourceViewerSearch* search = qobject_cast<SourceViewerSearch*>(m_layout->itemAt(1)->widget());
search->activateLineEdit();
return;
}
SourceViewerSearch* s = new SourceViewerSearch(this);
m_layout->insertWidget(1, s);
s->activateLineEdit();
}
void SourceViewer::reload()
{
if (m_frame) {
m_sourceEdit->clear();
loadSource();
m_statusBar->showMessage(tr("Source reloaded"));
}
else {
m_statusBar->showMessage(tr("Cannot reload source. Page has been closed."));
}
}
void SourceViewer::setTextEditable()
{
m_sourceEdit->setReadOnly(!m_sourceEdit->isReadOnly());
m_sourceEdit->setUndoRedoEnabled(true);
m_statusBar->showMessage(tr("Editable changed"));
}
void SourceViewer::setTextWordWrap()
{
m_sourceEdit->setWordWrapMode((m_sourceEdit->wordWrapMode() == QTextOption::NoWrap) ? QTextOption::WordWrap : QTextOption::NoWrap);
m_statusBar->showMessage(tr("Word Wrap changed"));
}
void SourceViewer::goToLine()
{
int line = QInputDialog::getInt(this, tr("Go to Line..."), tr("Enter line number"), 0, 1, 5000);
if (line == 0) {
return;
}
m_sourceEdit->goToLine(line);
}
#endif

View File

@ -1,73 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef SOURCEVIEWER_H
#define SOURCEVIEWER_H
#if QTWEBENGINE_DISABLED
#include <QWidget>
#include <QPointer>
#include "qzcommon.h"
class PlainEditWithLines;
class QBoxLayout;
class QStatusBar;
class QWebEngineFrame;
class QUPZILLA_EXPORT SourceViewer : public QWidget
{
Q_OBJECT
public:
explicit SourceViewer(QWebEngineFrame* frame, const QString &selectedHtml);
PlainEditWithLines* sourceEdit() { return m_sourceEdit; }
private slots:
void copyAvailable(bool yes);
void redoAvailable(bool available);
void undoAvailable(bool available);
void pasteAvailable();
void loadInPage();
void loadSource();
void save();
void findText();
void reload();
void setTextEditable();
void setTextWordWrap();
void goToLine();
private:
QBoxLayout* m_layout;
PlainEditWithLines* m_sourceEdit;
QPointer<QWebEngineFrame> m_frame;
QStatusBar* m_statusBar;
QString m_selectedHtml;
QAction* m_actionUndo;
QAction* m_actionRedo;
QAction* m_actionCut;
QAction* m_actionCopy;
QAction* m_actionPaste;
};
#endif
#endif // SOURCEVIEWER_H

View File

@ -1,138 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "sourceviewersearch.h"
#include "ui_sourceviewersearch.h"
#include "sourceviewer.h"
#include "iconprovider.h"
#include "plaineditwithlines.h"
#include <QShortcut>
#include <QKeyEvent>
#if QTWEBENGINE_DISABLED
SourceViewerSearch::SourceViewerSearch(SourceViewer* parent)
: AnimatedWidget(AnimatedWidget::Up)
, m_sourceViewer(parent)
, ui(new Ui::SourceViewerSearch)
, m_findFlags(0)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(widget());
ui->closeButton->setIcon(IconProvider::standardIcon(QStyle::SP_DialogCloseButton));
ui->next->setIcon(IconProvider::standardIcon(QStyle::SP_ArrowForward));
ui->previous->setIcon(IconProvider::standardIcon(QStyle::SP_ArrowBack));
ui->lineEdit->setFocus();
connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(hide()));
connect(ui->lineEdit, SIGNAL(textEdited(QString)), this, SLOT(next()));
connect(ui->lineEdit, SIGNAL(returnPressed()), this, SLOT(next()));
connect(ui->next, SIGNAL(clicked()), this, SLOT(next()));
connect(ui->previous, SIGNAL(clicked()), this, SLOT(previous()));
connect(ui->wholeWords, SIGNAL(toggled(bool)), SLOT(searchWholeWords()));
connect(this, SIGNAL(performSearch()), SLOT(find()));
QShortcut* findNextAction = new QShortcut(QKeySequence("F3"), this);
connect(findNextAction, SIGNAL(activated()), this, SLOT(next()));
QShortcut* findPreviousAction = new QShortcut(QKeySequence("Shift+F3"), this);
connect(findPreviousAction, SIGNAL(activated()), this, SLOT(previous()));
startAnimation();
parent->installEventFilter(this);
}
void SourceViewerSearch::activateLineEdit()
{
ui->lineEdit->setFocus();
}
void SourceViewerSearch::next()
{
m_findFlags &= (~QTextDocument::FindBackward);
emit performSearch();
}
void SourceViewerSearch::previous()
{
m_findFlags |= QTextDocument::FindBackward;
emit performSearch();
}
void SourceViewerSearch::searchWholeWords()
{
if (ui->wholeWords->isChecked()) {
m_findFlags |= QTextDocument::FindWholeWords;
}
else {
m_findFlags &= (~QTextDocument::FindWholeWords);
}
}
void SourceViewerSearch::find()
{
bool found = find(m_findFlags);
if (!found) {
m_sourceViewer->sourceEdit()->moveCursor(QTextCursor::Start);
}
ui->lineEdit->setProperty("notfound", QVariant(!found));
ui->lineEdit->style()->unpolish(ui->lineEdit);
ui->lineEdit->style()->polish(ui->lineEdit);
}
bool SourceViewerSearch::find(QTextDocument::FindFlags flags)
{
QString string = ui->lineEdit->text();
if (string.isEmpty()) {
return true;
}
if (string != m_lastSearchedString) {
QTextCursor cursor = m_sourceViewer->sourceEdit()->textCursor();
cursor.setPosition(cursor.selectionStart());
cursor.clearSelection();
m_sourceViewer->sourceEdit()->setTextCursor(cursor);
m_lastSearchedString = string;
}
if (!m_sourceViewer->sourceEdit()->find(string, flags)) {
QTextCursor cursor = m_sourceViewer->sourceEdit()->textCursor();
m_sourceViewer->sourceEdit()->moveCursor((flags == QTextDocument::FindBackward) ? QTextCursor::End : QTextCursor::Start);
if (!m_sourceViewer->sourceEdit()->find(string, flags)) {
cursor.clearSelection();
m_sourceViewer->sourceEdit()->setTextCursor(cursor);
return false;
}
}
return true;
}
bool SourceViewerSearch::eventFilter(QObject* obj, QEvent* event)
{
if (event->type() == QEvent::KeyPress && static_cast<QKeyEvent*>(event)->key() == Qt::Key_Escape) {
hide();
return false;
}
return AnimatedWidget::eventFilter(obj, event);
}
#endif

View File

@ -1,66 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef SOURCEVIEWERSEARCH_H
#define SOURCEVIEWERSEARCH_H
#include <QTextDocument>
#include "qzcommon.h"
#include "animatedwidget.h"
#if QTWEBENGINE_DISABLED
namespace Ui
{
class SourceViewerSearch;
}
class SourceViewer;
class QUPZILLA_EXPORT SourceViewerSearch : public AnimatedWidget
{
Q_OBJECT
public:
explicit SourceViewerSearch(SourceViewer* parent = 0);
void activateLineEdit();
bool eventFilter(QObject* obj, QEvent* event);
signals:
void performSearch();
public slots:
private slots:
void next();
void previous();
void searchWholeWords();
void find();
bool find(QTextDocument::FindFlags);
private:
SourceViewer* m_sourceViewer;
Ui::SourceViewerSearch* ui;
QString m_lastSearchedString;
QTextDocument::FindFlags m_findFlags;
};
#endif
#endif // SOURCEVIEWERSEARCH_H

View File

@ -1,121 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SourceViewerSearch</class>
<widget class="QWidget" name="SourceViewerSearch">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>677</width>
<height>38</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<widget class="MacToolButton" name="closeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Search: </string>
</property>
</widget>
</item>
<item>
<widget class="FocusSelectLineEdit" name="lineEdit">
<property name="placeholderText">
<string>Search...</string>
</property>
</widget>
</item>
<item>
<widget class="MacToolButton" name="previous">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="MacToolButton" name="next">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="wholeWords">
<property name="text">
<string>Whole words</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>MacToolButton</class>
<extends>QToolButton</extends>
<header>mactoolbutton.h</header>
</customwidget>
<customwidget>
<class>FocusSelectLineEdit</class>
<extends>QLineEdit</extends>
<header>focusselectlineedit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -1,326 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
/* ============================================================
*
* Copyright (C) 2009 by Benjamin C. Meyer <ben@meyerhome.net>
* Copyright (C) 2010 by Matthieu Gicquel <matgic78@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ============================================================ */
#include "clicktoflash.h"
#include "clickablelabel.h"
#include "mainapplication.h"
#include "pluginproxy.h"
#include "squeezelabelv2.h"
#include "webpage.h"
#include "qztools.h"
#include "browserwindow.h"
#include <QHBoxLayout>
#include <QToolButton>
#include <QFormLayout>
#include <QMenu>
#include <QTimer>
#include <QWebEngineView>
#include <QNetworkRequest>
#if QTWEBENGINE_DISABLED
#include <QWebHitTestResult>
QUrl ClickToFlash::acceptedUrl;
QStringList ClickToFlash::acceptedArgNames;
QStringList ClickToFlash::acceptedArgValues;
ClickToFlash::ClickToFlash(const QUrl &pluginUrl, const QStringList &argumentNames, const QStringList &argumentValues, WebPage* parentPage)
: QWidget()
, m_argumentNames(argumentNames)
, m_argumentValues(argumentValues)
, m_toolButton(0)
, m_layout1(0)
, m_layout2(0)
, m_frame(0)
, m_url(pluginUrl)
, m_page(parentPage)
{
m_layout1 = new QHBoxLayout(this);
m_frame = new QFrame(this);
m_frame->setObjectName("click2flash-frame");
m_frame->setContentsMargins(0, 0, 0, 0);
m_layout2 = new QHBoxLayout(m_frame);
m_toolButton = new QToolButton(this);
m_toolButton->setObjectName("click2flash-toolbutton");
m_toolButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_toolButton->setCursor(Qt::PointingHandCursor);
m_layout2->addWidget(m_toolButton);
m_layout1->addWidget(m_frame);
m_layout1->setContentsMargins(0, 0, 0, 0);
m_layout2->setContentsMargins(0, 0, 0, 0);
connect(m_toolButton, SIGNAL(clicked()), this, SLOT(load()));
setMinimumSize(27, 27);
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(customContextMenuRequested(QPoint)));
QTimer::singleShot(0, this, SLOT(ensurePluginVisible()));
}
bool ClickToFlash::isAlreadyAccepted(const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues)
{
return (url == acceptedUrl &&
argumentNames == acceptedArgNames &&
argumentValues == acceptedArgValues);
}
void ClickToFlash::ensurePluginVisible()
{
// Well, kind of a dirty workaround, but it works.
// I don't know any other method how to show our plugin
// and adjust it on the proper position in page
// Scheduling adjustingPage rather than actually changing zoomFactor
// right now, as it is CPU intensive when there is lot of click2flash
// objects on page
m_page->scheduleAdjustPage();
}
void ClickToFlash::customContextMenuRequested(const QPoint &pos)
{
QMenu menu;
menu.addAction(tr("Object blocked by ClickToFlash"));
menu.addAction(tr("Show more information about object"), this, SLOT(showInfo()));
menu.addSeparator();
menu.addAction(tr("Delete object"), this, SLOT(hideObject()));
menu.addAction(tr("Add %1 to whitelist").arg(m_url.host()), this, SLOT(toWhitelist()));
menu.actions().at(0)->setEnabled(false);
menu.exec(mapToGlobal(pos));
}
void ClickToFlash::toWhitelist()
{
mApp->plugins()->c2f_addWhitelist(m_url.host());
load();
}
void ClickToFlash::hideObject()
{
findElement();
if (!m_element.isNull()) {
m_element.setStyleProperty("visibility", "hidden");
}
else {
hide();
}
//deleteLater(); //Well, it should be there, but therefore it sometimes crashes
}
void ClickToFlash::findElement()
{
if (!m_toolButton) {
return;
}
QWidget* parent = parentWidget();
QWebEngineView* view = 0;
while (parent) {
if (QWebEngineView* aView = qobject_cast<QWebEngineView*>(parent)) {
view = aView;
break;
}
parent = parent->parentWidget();
}
if (!view) {
return;
}
QPoint objectPos = view->mapFromGlobal(m_toolButton->mapToGlobal(m_toolButton->pos()));
QWebEngineFrame* 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<QWebEngineFrame*> frames;
frames.append(objectFrame);
frames.append(view->page()->mainFrame());
while (!frames.isEmpty()) {
QWebEngineFrame* 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 ClickToFlash::load()
{
findElement();
if (m_element.isNull()) {
qWarning("Click2Flash: Cannot find Flash object.");
}
else {
/*
Old code caused sometimes flashing of the whole browser window and then somehow
ruined rendering of opacity effects, etc..
QWebElement substitute = m_element.clone();
substitute.setAttribute(QLatin1String("type"), "application/futuresplash");
m_element.replace(substitute);
So asynchronous JavaScript code is used to remove element from page and then substitute
it with unblocked Flash. The JavaScript code is:
var qz_c2f_clone = this.cloneNode(true);
var qz_c2f_parentNode = this.parentNode;
var qz_c2f_substituteElement = document.createElement(this.tagName);
qz_c2f_substituteElement.width = this.width;
qz_c2f_substituteElement.height = this.height;
qz_c2f_substituteElement.type = "application/futuresplash";
this.parentNode.replaceChild(qz_c2f_substituteElement, this);
setTimeout(function(){
qz_c2f_parentNode.replaceChild(qz_c2f_clone, qz_c2f_substituteElement);
}, 250);
*/
acceptedUrl = m_url;
acceptedArgNames = m_argumentNames;
acceptedArgValues = m_argumentValues;
QString js = "var qz_c2f_clone=this.cloneNode(true);var qz_c2f_parentNode=this.parentNode;"
"var qz_c2f_substituteElement=document.createElement(this.tagName);"
"qz_c2f_substituteElement.width=this.width;qz_c2f_substituteElement.height=this.height;"
"qz_c2f_substituteElement.type=\"application/futuresplash\";"
"this.parentNode.replaceChild(qz_c2f_substituteElement,this);setTimeout(function(){"
"qz_c2f_parentNode.replaceChild(qz_c2f_clone,qz_c2f_substituteElement);},250);";
m_element.evaluateJavaScript(js);
}
}
bool ClickToFlash::checkUrlOnElement(QWebElement el)
{
QString checkString = el.attribute("src");
if (checkString.isEmpty()) {
checkString = el.attribute("data");
}
if (checkString.isEmpty()) {
checkString = el.attribute("value");
}
checkString = m_page->url().resolved(QUrl(checkString)).toString(QUrl::RemoveQuery);
return m_url.toEncoded().contains(checkString.toUtf8());
}
bool ClickToFlash::checkElement(QWebElement el)
{
if (m_argumentNames == el.attributeNames()) {
foreach (const QString &name, m_argumentNames) {
if (m_argumentValues.indexOf(el.attribute(name)) == -1) {
return false;
}
}
return true;
}
return false;
}
void ClickToFlash::showInfo()
{
QWidget* widg = new QWidget();
widg->setAttribute(Qt::WA_DeleteOnClose);
widg->setWindowTitle(tr("Flash Object"));
QFormLayout* lay = new QFormLayout(widg);
QLabel* attrib = new QLabel(tr("<b>Attribute Name</b>"));
QLabel* value = new QLabel(tr("<b>Value</b>"));
if (isRightToLeft()) {
widg->setLayoutDirection(Qt::LeftToRight);
attrib->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
value->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
}
lay->addRow(attrib, value);
int i = 0;
foreach (const QString &name, m_argumentNames) {
QString value = m_argumentValues.at(i);
SqueezeLabelV2* valueLabel = new SqueezeLabelV2(value);
valueLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse);
lay->addRow(new SqueezeLabelV2(name), valueLabel);
i++;
}
if (i == 0) {
lay->addRow(new QLabel(tr("No more information available.")));
}
widg->setMaximumHeight(500);
QzTools::centerWidgetToParent(widg, m_page->view());
widg->show();
}
#endif

View File

@ -1,106 +0,0 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
/* ============================================================
*
* Copyright (C) 2009 by Benjamin C. Meyer <ben@meyerhome.net>
* Copyright (C) 2010 by Matthieu Gicquel <matgic78@gmail.com>
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ============================================================ */
#ifndef CLICKTOFLASH_H
#define CLICKTOFLASH_H
#if QTWEBENGINE_DISABLED
#include "qzcommon.h"
// Qt Includes
#include <QUrl>
#include <QWidget>
#include <QWebElement>
class QToolButton;
class QHBoxLayout;
class QFrame;
class WebPage;
class QUPZILLA_EXPORT ClickToFlash : public QWidget
{
Q_OBJECT
public:
explicit ClickToFlash(const QUrl &pluginUrl, const QStringList &argumentNames, const QStringList &argumentValues, WebPage* parentPage);
static bool isAlreadyAccepted(const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues);
private slots:
void load();
void customContextMenuRequested(const QPoint &pos);
void toWhitelist();
void findElement();
void hideObject();
void showInfo();
void ensurePluginVisible();
private:
bool checkElement(QWebElement el);
bool checkUrlOnElement(QWebElement el);
QStringList m_argumentNames;
QStringList m_argumentValues;
QWebElement m_element;
QToolButton* m_toolButton;
QHBoxLayout* m_layout1;
QHBoxLayout* m_layout2;
QFrame* m_frame;
/**
used to find the right QWebElement between the ones of the different plugins
*/
const QUrl m_url;
static QUrl acceptedUrl;
static QStringList acceptedArgNames;
static QStringList acceptedArgValues;
WebPage* m_page;
};
#endif
#endif // CLICKTOFLASH_H