mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 10:46:35 +01:00
Refactoring whole code to support popup windows.
- it is needed to provide support for casting WebView into TabbedWebView and PopupWebView
This commit is contained in:
parent
a9f9876a25
commit
977f9db6f6
@ -52,8 +52,6 @@ class QNetworkRequest;
|
||||
class QNetworkReply;
|
||||
class AdBlockNetwork : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AdBlockNetwork(QObject* parent = 0);
|
||||
QNetworkReply* block(const QNetworkRequest &request);
|
||||
|
@ -35,8 +35,6 @@ class AdBlockRule;
|
||||
class QWebPage;
|
||||
class AdBlockPage : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AdBlockPage(QObject* parent = 0);
|
||||
|
||||
|
@ -19,8 +19,7 @@
|
||||
#include "qupzilla.h"
|
||||
|
||||
CommandLineOptions::CommandLineOptions(int &argc, char** argv)
|
||||
: QObject(0)
|
||||
, m_argc(argc)
|
||||
: m_argc(argc)
|
||||
, m_argv(argv)
|
||||
{
|
||||
parseActions();
|
||||
|
@ -18,13 +18,11 @@
|
||||
#ifndef COMMANDLINEOPTIONS_H
|
||||
#define COMMANDLINEOPTIONS_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QPair>
|
||||
#include <iostream>
|
||||
|
||||
class CommandLineOptions : public QObject
|
||||
class CommandLineOptions
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Action { NoAction, OpenUrl, StartWithProfile, StartWithoutAddons,
|
||||
NewTab, NewWindow, ShowDownloadManager, StartPrivateBrowsing,
|
||||
|
@ -433,7 +433,7 @@ void MainApplication::receiveAppMessage(QString message)
|
||||
QWidget* actWin = getWindow();
|
||||
if (message.startsWith("URL:")) {
|
||||
QString url(message.remove("URL:"));
|
||||
addNewTab(WebView::guessUrlFromString(url));
|
||||
addNewTab(QUrl::fromUserInput(url));
|
||||
actWin = getWindow();
|
||||
}
|
||||
else if (message.startsWith("ACTION:")) {
|
||||
|
@ -21,8 +21,7 @@
|
||||
#include "mainapplication.h"
|
||||
|
||||
ProfileUpdater::ProfileUpdater(const QString &profilePath)
|
||||
: QObject()
|
||||
, m_profilePath(profilePath)
|
||||
: m_profilePath(profilePath)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -18,21 +18,15 @@
|
||||
#ifndef PROFILEUPDATER_H
|
||||
#define PROFILEUPDATER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QDir>
|
||||
#include <iostream>
|
||||
|
||||
class ProfileUpdater : public QObject
|
||||
class ProfileUpdater
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ProfileUpdater(const QString &profilePath);
|
||||
void checkProfile();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
void updateProfile(const QString ¤t, const QString &profile);
|
||||
void copyDataToProfile();
|
||||
|
@ -5,17 +5,11 @@
|
||||
|
||||
class ProxyStyle : public QProxyStyle
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ProxyStyle();
|
||||
|
||||
int styleHint(StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0, QStyleHintReturn* returnData = 0) const;
|
||||
// int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const;
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
};
|
||||
|
||||
#endif // PROXYSTYLE_H
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "tabwidget.h"
|
||||
#include "tabbar.h"
|
||||
#include "webpage.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "lineedit.h"
|
||||
#include "historymodel.h"
|
||||
#include "locationbar.h"
|
||||
@ -176,7 +176,7 @@ void QupZilla::postLaunch()
|
||||
}
|
||||
|
||||
if (!m_startingUrl.isEmpty()) {
|
||||
startUrl = WebView::guessUrlFromString(m_startingUrl.toString());
|
||||
startUrl = QUrl::fromUserInput(m_startingUrl.toString());
|
||||
addTab = true;
|
||||
}
|
||||
|
||||
@ -1021,15 +1021,6 @@ void QupZilla::loadAddress(const QUrl &url)
|
||||
locationBar()->setText(url.toEncoded());
|
||||
}
|
||||
|
||||
void QupZilla::urlEnter()
|
||||
{
|
||||
if (locationBar()->text().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
loadAddress(QUrl(WebView::guessUrlFromString(locationBar()->text())));
|
||||
weView()->setFocus();
|
||||
}
|
||||
|
||||
void QupZilla::showCookieManager()
|
||||
{
|
||||
CookieManager* m = mApp->cookieManager();
|
||||
@ -1082,7 +1073,7 @@ void QupZilla::showSource(QWebFrame* frame, const QString &selectedHtml)
|
||||
|
||||
void QupZilla::showPageInfo()
|
||||
{
|
||||
SiteInfo* info = new SiteInfo(this, this);
|
||||
SiteInfo* info = new SiteInfo(weView(), this);
|
||||
info->setAttribute(Qt::WA_DeleteOnClose);
|
||||
info->show();
|
||||
}
|
||||
@ -1208,12 +1199,12 @@ void QupZilla::refreshHistory()
|
||||
|
||||
void QupZilla::currentTabChanged()
|
||||
{
|
||||
WebView* view = weView();
|
||||
TabbedWebView* view = weView();
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
||||
setWindowTitle(view->title() + tr(" - QupZilla"));
|
||||
setWindowTitle(tr("%1 - QupZilla").arg(view->title()));
|
||||
m_ipLabel->setText(view->getIp());
|
||||
view->setFocus();
|
||||
|
||||
@ -1226,7 +1217,7 @@ void QupZilla::currentTabChanged()
|
||||
|
||||
void QupZilla::updateLoadingActions()
|
||||
{
|
||||
WebView* view = weView();
|
||||
TabbedWebView* view = weView();
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
@ -1239,7 +1230,7 @@ void QupZilla::updateLoadingActions()
|
||||
m_actionReload->setEnabled(!isLoading);
|
||||
|
||||
if (isLoading) {
|
||||
m_progressBar->setValue(view->getLoading());
|
||||
m_progressBar->setValue(view->loadProgress());
|
||||
m_navigationBar->showStopButton();
|
||||
}
|
||||
else {
|
||||
@ -1247,6 +1238,13 @@ void QupZilla::updateLoadingActions()
|
||||
}
|
||||
}
|
||||
|
||||
void QupZilla::addDeleteOnCloseWidget(QWidget* widget)
|
||||
{
|
||||
if (!m_deleteOnCloseWidgets.contains(widget)) {
|
||||
m_deleteOnCloseWidgets.append(widget);
|
||||
}
|
||||
}
|
||||
|
||||
void QupZilla::aboutQupZilla()
|
||||
{
|
||||
AboutDialog about(this);
|
||||
@ -1489,22 +1487,6 @@ void QupZilla::keyPressEvent(QKeyEvent* event)
|
||||
}
|
||||
}
|
||||
|
||||
void QupZilla::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
switch (event->button()) {
|
||||
case Qt::XButton1:
|
||||
weView()->back();
|
||||
break;
|
||||
case Qt::XButton2:
|
||||
weView()->forward();
|
||||
break;
|
||||
|
||||
default:
|
||||
QMainWindow::mousePressEvent(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void QupZilla::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
if (mApp->isClosing()) {
|
||||
@ -1577,12 +1559,12 @@ bool QupZilla::quitApp()
|
||||
settings.endGroup();
|
||||
|
||||
if (askOnClose && afterLaunch != 3 && m_tabWidget->count() > 1) {
|
||||
QDialog* dialog = new QDialog(this);
|
||||
QDialog dialog(this);
|
||||
Ui_CloseDialog* ui = new Ui_CloseDialog();
|
||||
ui->setupUi(dialog);
|
||||
ui->setupUi(&dialog);
|
||||
ui->textLabel->setText(tr("There are still %1 open tabs and your session won't be stored. Are you sure to quit QupZilla?").arg(m_tabWidget->count()));
|
||||
ui->iconLabel->setPixmap(style()->standardPixmap(QStyle::SP_MessageBoxWarning));
|
||||
if (dialog->exec() != QDialog::Accepted) {
|
||||
if (dialog.exec() != QDialog::Accepted) {
|
||||
return false;
|
||||
}
|
||||
if (ui->dontAskAgain->isChecked()) {
|
||||
@ -1596,4 +1578,9 @@ bool QupZilla::quitApp()
|
||||
|
||||
QupZilla::~QupZilla()
|
||||
{
|
||||
foreach(const QWeakPointer<QWidget> &pointer, m_deleteOnCloseWidgets) {
|
||||
if (pointer) {
|
||||
pointer.data()->deleteLater();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,13 +44,13 @@
|
||||
#include "qwebkitversion.h"
|
||||
|
||||
#include "webtab.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "tabwidget.h"
|
||||
#include "mainapplication.h"
|
||||
#include "locationbar.h"
|
||||
|
||||
class TabWidget;
|
||||
class WebView;
|
||||
class TabbedWebView;
|
||||
class LineEdit;
|
||||
class SearchToolBar;
|
||||
class BookmarksToolbar;
|
||||
@ -94,10 +94,12 @@ public:
|
||||
void currentTabChanged();
|
||||
void updateLoadingActions();
|
||||
|
||||
void addDeleteOnCloseWidget(QWidget* widget);
|
||||
|
||||
virtual QMenuBar* menuBar() const;
|
||||
|
||||
inline WebView* weView() const { WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(m_tabWidget->currentIndex())); if (!webTab) return 0; return webTab->view(); }
|
||||
inline WebView* weView(int index) const { WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(index)); if (!webTab) return 0; return webTab->view(); }
|
||||
inline TabbedWebView* weView() const { WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(m_tabWidget->currentIndex())); if (!webTab) return 0; return webTab->view(); }
|
||||
inline TabbedWebView* weView(int index) const { WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(index)); if (!webTab) return 0; return webTab->view(); }
|
||||
inline LocationBar* locationBar() { return qobject_cast<LocationBar*>(m_tabWidget->locationBars()->currentWidget()); }
|
||||
inline TabWidget* tabWidget() { return m_tabWidget; }
|
||||
inline BookmarksToolbar* bookmarksToolbar() { return m_bookmarksToolbar; }
|
||||
@ -149,7 +151,6 @@ private slots:
|
||||
void stop() { weView()->stop(); }
|
||||
void reload() { weView()->reload(); }
|
||||
void reloadByPassCache() { weView()->page()->triggerAction(QWebPage::ReloadAndBypassCache); }
|
||||
void urlEnter();
|
||||
void aboutQupZilla();
|
||||
void addTab() { m_tabWidget->addView(QUrl(), TabWidget::NewTab, true); }
|
||||
void savePageScreen();
|
||||
@ -208,7 +209,6 @@ private slots:
|
||||
private:
|
||||
void resizeEvent(QResizeEvent* event);
|
||||
void keyPressEvent(QKeyEvent* event);
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
||||
void setupUi();
|
||||
@ -287,6 +287,8 @@ private:
|
||||
bool m_statusBarVisible;
|
||||
bool m_navigationVisible;
|
||||
bool m_bookmarksToolBarVisible;
|
||||
|
||||
QList<QWeakPointer<QWidget> > m_deleteOnCloseWidgets;
|
||||
};
|
||||
|
||||
#endif // QUPZILLA_H
|
||||
|
@ -2,8 +2,7 @@
|
||||
|
||||
QSettings* Settings::m_settings = 0;
|
||||
|
||||
Settings::Settings(QObject* parent)
|
||||
: QObject(parent)
|
||||
Settings::Settings()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -4,11 +4,10 @@
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
|
||||
class Settings : public QObject
|
||||
class Settings
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Settings(QObject* parent = 0);
|
||||
explicit Settings();
|
||||
~Settings();
|
||||
|
||||
static void createSettings(const QString &fileName);
|
||||
|
@ -17,7 +17,9 @@
|
||||
* ============================================================ */
|
||||
#include "autofillmodel.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "webpage.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "popupwebview.h"
|
||||
#include "mainapplication.h"
|
||||
#include "autofillnotification.h"
|
||||
#include "databasewriter.h"
|
||||
@ -28,7 +30,7 @@ AutoFillModel::AutoFillModel(QupZilla* mainClass, QObject* parent)
|
||||
, p_QupZilla(mainClass)
|
||||
, m_isStoring(false)
|
||||
{
|
||||
QTimer::singleShot(0, this, SLOT(loadSettings()));
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
void AutoFillModel::loadSettings()
|
||||
@ -46,6 +48,10 @@ bool AutoFillModel::isStored(const QUrl &url)
|
||||
}
|
||||
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
query.exec("SELECT count(id) FROM autofill WHERE server='" + server + "'");
|
||||
query.next();
|
||||
@ -62,6 +68,10 @@ bool AutoFillModel::isStoringEnabled(const QUrl &url)
|
||||
}
|
||||
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
query.exec("SELECT count(id) FROM autofill_exceptions WHERE server='" + server + "'");
|
||||
query.next();
|
||||
@ -74,6 +84,10 @@ bool AutoFillModel::isStoringEnabled(const QUrl &url)
|
||||
void AutoFillModel::blockStoringfor(const QUrl &url)
|
||||
{
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
query.prepare("INSERT INTO autofill_exceptions (server) VALUES (?)");
|
||||
query.addBindValue(server);
|
||||
@ -83,6 +97,10 @@ void AutoFillModel::blockStoringfor(const QUrl &url)
|
||||
QString AutoFillModel::getUsername(const QUrl &url)
|
||||
{
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
query.exec("SELECT username FROM autofill WHERE server='" + server + "'");
|
||||
query.next();
|
||||
@ -92,6 +110,10 @@ QString AutoFillModel::getUsername(const QUrl &url)
|
||||
QString AutoFillModel::getPassword(const QUrl &url)
|
||||
{
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
query.exec("SELECT password FROM autofill WHERE server='" + server + "'");
|
||||
query.next();
|
||||
@ -106,8 +128,14 @@ void AutoFillModel::addEntry(const QUrl &url, const QString &name, const QString
|
||||
if (query.next()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
query.prepare("INSERT INTO autofill (server, username, password) VALUES (?,?,?)");
|
||||
query.bindValue(0, url.host());
|
||||
query.bindValue(0, server);
|
||||
query.bindValue(1, name);
|
||||
query.bindValue(2, pass);
|
||||
mApp->dbWriter()->executeQuery(query);
|
||||
@ -122,31 +150,48 @@ void AutoFillModel::addEntry(const QUrl &url, const QByteArray &data, const QStr
|
||||
return;
|
||||
}
|
||||
|
||||
QString server = url.host();
|
||||
if (server.isEmpty()) {
|
||||
server = url.toString();
|
||||
}
|
||||
|
||||
query.prepare("INSERT INTO autofill (server, data, username, password) VALUES (?,?,?,?)");
|
||||
query.bindValue(0, url.host());
|
||||
query.bindValue(0, server);
|
||||
query.bindValue(1, data);
|
||||
query.bindValue(2, user);
|
||||
query.bindValue(3, pass);
|
||||
mApp->dbWriter()->executeQuery(query);
|
||||
}
|
||||
|
||||
void AutoFillModel::completePage(WebView* view)
|
||||
void AutoFillModel::completePage(WebPage* page)
|
||||
{
|
||||
if (!isStored(view->url())) {
|
||||
if (!page) {
|
||||
return;
|
||||
}
|
||||
|
||||
QUrl pageUrl = page->url();
|
||||
if (!isStored(pageUrl)) {
|
||||
return;
|
||||
}
|
||||
|
||||
QWebElementCollection inputs;
|
||||
QList<QWebFrame*> frames;
|
||||
frames.append(view->page()->mainFrame());
|
||||
frames.append(page->mainFrame());
|
||||
while (!frames.isEmpty()) {
|
||||
QWebFrame* frame = frames.takeFirst();
|
||||
inputs.append(frame->findAllElements("input"));
|
||||
frames += frame->childFrames();
|
||||
}
|
||||
|
||||
QString server = pageUrl.host();
|
||||
if (server.isEmpty()) {
|
||||
server = pageUrl.toString();
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
query.exec("SELECT data FROM autofill WHERE server='" + view->url().host() + "'");
|
||||
query.prepare("SELECT data FROM autofill WHERE server=?");
|
||||
query.addBindValue(server);
|
||||
query.exec();
|
||||
query.next();
|
||||
QByteArray data = query.value(0).toByteArray();
|
||||
if (data.isEmpty()) {
|
||||
@ -183,10 +228,12 @@ void AutoFillModel::post(const QNetworkRequest &request, const QByteArray &outgo
|
||||
m_lastOutgoingData = outgoingData;
|
||||
|
||||
QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
|
||||
QWebPage* webPage = static_cast<QWebPage*>(v.value<void*>());
|
||||
v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 102));
|
||||
WebView* webView = static_cast<WebView*>(v.value<void*>());
|
||||
if (!webPage || !webView) {
|
||||
WebPage* webPage = static_cast<WebPage*>(v.value<void*>());
|
||||
if (!webPage) {
|
||||
return;
|
||||
}
|
||||
WebView* webView = qobject_cast<WebView*>(webPage->view());
|
||||
if (!webView) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -201,7 +248,7 @@ void AutoFillModel::post(const QNetworkRequest &request, const QByteArray &outgo
|
||||
QString usernameValue;
|
||||
QString passwordName;
|
||||
QString passwordValue;
|
||||
QUrl siteUrl = webView->url();
|
||||
QUrl siteUrl = webPage->url();
|
||||
|
||||
if (!isStoringEnabled(siteUrl)) {
|
||||
return;
|
||||
|
@ -24,16 +24,16 @@
|
||||
#include <QWebElement>
|
||||
|
||||
class QupZilla;
|
||||
class WebView;
|
||||
class WebPage;
|
||||
class AutoFillModel : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
typedef QList<QPair<QString, QString> > QueryItems;
|
||||
typedef QPair<QString, QString> QueryItem;
|
||||
|
||||
explicit AutoFillModel(QupZilla* mainClass, QObject* parent = 0);
|
||||
void completePage(WebView* view);
|
||||
|
||||
void loadSettings();
|
||||
|
||||
bool isStored(const QUrl &url);
|
||||
bool isStoringEnabled(const QUrl &url);
|
||||
@ -45,11 +45,7 @@ public:
|
||||
void addEntry(const QUrl &url, const QByteArray &data, const QString &user, const QString &pass);
|
||||
|
||||
void post(const QNetworkRequest &request, const QByteArray &outgoingData);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void loadSettings();
|
||||
void completePage(WebPage* frame);
|
||||
|
||||
private:
|
||||
bool dataContains(const QByteArray &data, const QString &attributeName);
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
#include "clickablelabel.h"
|
||||
#include "bookmarksmodel.h"
|
||||
|
||||
class QupZilla;
|
||||
class BookmarksModel;
|
||||
class BookmarkIcon : public ClickableLabel
|
||||
@ -31,10 +32,6 @@ public:
|
||||
explicit BookmarkIcon(QupZilla* mainClass, QWidget* parent = 0);
|
||||
void checkBookmark(const QUrl &url);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private slots:
|
||||
void iconClicked();
|
||||
void bookmarkAdded(const BookmarksModel::Bookmark &bookmark);
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "bookmarksmanager.h"
|
||||
#include "ui_bookmarksmanager.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "bookmarkstoolbar.h"
|
||||
#include "tabwidget.h"
|
||||
#include "bookmarksmodel.h"
|
||||
@ -191,7 +191,7 @@ void BookmarksManager::deleteItem()
|
||||
|
||||
void BookmarksManager::addBookmark(WebView* view)
|
||||
{
|
||||
insertBookmark(view->url(), view->title(), view->siteIcon());
|
||||
insertBookmark(view->url(), view->title(), view->icon());
|
||||
}
|
||||
|
||||
void BookmarksManager::moveBookmark()
|
||||
@ -617,12 +617,12 @@ void BookmarksManager::insertAllTabs()
|
||||
}
|
||||
|
||||
foreach(WebTab * tab, getQupZilla()->tabWidget()->allTabs(false)) {
|
||||
WebView* view = tab->view();
|
||||
TabbedWebView* view = tab->view();
|
||||
if (view->url().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
m_bookmarksModel->saveBookmark(view->url(), view->title(), view->siteIcon(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
|
||||
m_bookmarksModel->saveBookmark(view->url(), view->title(), view->icon(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
|
||||
}
|
||||
|
||||
delete dialog;
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "bookmarksmodel.h"
|
||||
#include "settings.h"
|
||||
#include "mainapplication.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "iconprovider.h"
|
||||
#include "databasewriter.h"
|
||||
|
||||
@ -156,7 +156,7 @@ bool BookmarksModel::saveBookmark(const QUrl &url, const QString &title, const Q
|
||||
|
||||
bool BookmarksModel::saveBookmark(WebView* view, const QString &folder)
|
||||
{
|
||||
return saveBookmark(view->url(), view->title(), view->siteIcon(), folder);
|
||||
return saveBookmark(view->url(), view->title(), view->icon(), folder);
|
||||
}
|
||||
|
||||
bool BookmarksModel::removeBookmark(int id)
|
||||
|
@ -203,6 +203,8 @@ void BookmarksToolbar::editBookmark()
|
||||
|
||||
editUrl->setText(b.url.toString());
|
||||
editTitle->setText(b.title);
|
||||
editUrl->setCursorPosition(0);
|
||||
editTitle->setCursorPosition(0);
|
||||
|
||||
dialog->setWindowTitle(tr("Edit Bookmark"));
|
||||
dialog->setMinimumSize(400, 100);
|
||||
|
@ -17,11 +17,12 @@
|
||||
* ============================================================ */
|
||||
#include "chromeimporter.h"
|
||||
#include "globalfunctions.h"
|
||||
#include "bookmarksimportdialog.h"
|
||||
|
||||
ChromeImporter::ChromeImporter(QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_error(false)
|
||||
, m_errorString(tr("No Error"))
|
||||
, m_errorString(BookmarksImportDialog::tr("No Error"))
|
||||
{
|
||||
}
|
||||
|
||||
@ -36,7 +37,7 @@ bool ChromeImporter::openFile()
|
||||
|
||||
if (!m_file.open(QFile::ReadOnly)) {
|
||||
m_error = true;
|
||||
m_errorString = tr("Unable to open file.");
|
||||
m_errorString = BookmarksImportDialog::tr("Unable to open file.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -81,7 +82,7 @@ QList<BookmarksModel::Bookmark> ChromeImporter::exportBookmarks()
|
||||
}
|
||||
else {
|
||||
m_error = true;
|
||||
m_errorString = tr("Cannot evaluate JSON code.");
|
||||
m_errorString = BookmarksImportDialog::tr("Cannot evaluate JSON code.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,6 @@
|
||||
|
||||
class ChromeImporter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ChromeImporter(QObject* parent = 0);
|
||||
|
||||
@ -41,10 +40,6 @@ public:
|
||||
bool error() { return m_error; }
|
||||
QString errorString() { return m_errorString; }
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QString m_path;
|
||||
QFile m_file;
|
||||
|
@ -16,11 +16,12 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* ============================================================ */
|
||||
#include "firefoximporter.h"
|
||||
#include "bookmarksimportdialog.h"
|
||||
|
||||
FirefoxImporter::FirefoxImporter(QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_error(false)
|
||||
, m_errorString(tr("No Error"))
|
||||
, m_errorString(BookmarksImportDialog::tr("No Error"))
|
||||
{
|
||||
}
|
||||
|
||||
@ -35,7 +36,7 @@ bool FirefoxImporter::openDatabase()
|
||||
|
||||
if (!QFile::exists(m_path)) {
|
||||
m_error = true;
|
||||
m_errorString = tr("File does not exists.");
|
||||
m_errorString = BookmarksImportDialog::tr("File does not exists.");
|
||||
return false;
|
||||
}
|
||||
db.setDatabaseName(m_path);
|
||||
@ -43,7 +44,7 @@ bool FirefoxImporter::openDatabase()
|
||||
|
||||
if (!open) {
|
||||
m_error = true;
|
||||
m_errorString = tr("Unable to open database. Is Firefox running?");
|
||||
m_errorString = BookmarksImportDialog::tr("Unable to open database. Is Firefox running?");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,6 @@
|
||||
|
||||
class FirefoxImporter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit FirefoxImporter(QObject* parent = 0);
|
||||
|
||||
@ -40,10 +39,6 @@ public:
|
||||
bool error() { return m_error; }
|
||||
QString errorString() { return m_errorString; }
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QString m_path;
|
||||
QSqlDatabase db;
|
||||
|
@ -1,9 +1,10 @@
|
||||
#include "htmlimporter.h"
|
||||
#include "bookmarksimportdialog.h"
|
||||
|
||||
HtmlImporter::HtmlImporter(QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_error(false)
|
||||
, m_errorString(tr("No Error"))
|
||||
, m_errorString(BookmarksImportDialog::tr("No Error"))
|
||||
{
|
||||
}
|
||||
|
||||
@ -18,7 +19,7 @@ bool HtmlImporter::openFile()
|
||||
|
||||
if (!m_file.open(QFile::ReadOnly)) {
|
||||
m_error = true;
|
||||
m_errorString = tr("Unable to open file.");
|
||||
m_errorString = BookmarksImportDialog::tr("Unable to open file.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,6 @@
|
||||
|
||||
class HtmlImporter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit HtmlImporter(QObject* parent = 0);
|
||||
|
||||
@ -21,10 +20,6 @@ public:
|
||||
bool error() { return m_error; }
|
||||
QString errorString() { return m_errorString; }
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QString m_path;
|
||||
QFile m_file;
|
||||
|
@ -16,11 +16,12 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* ============================================================ */
|
||||
#include "operaimporter.h"
|
||||
#include "bookmarksimportdialog.h"
|
||||
|
||||
OperaImporter::OperaImporter(QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_error(false)
|
||||
, m_errorString(tr("No Error"))
|
||||
, m_errorString(BookmarksImportDialog::tr("No Error"))
|
||||
{
|
||||
}
|
||||
|
||||
@ -35,7 +36,7 @@ bool OperaImporter::openFile()
|
||||
|
||||
if (!m_file.open(QFile::ReadOnly)) {
|
||||
m_error = true;
|
||||
m_errorString = tr("Unable to open file.");
|
||||
m_errorString = BookmarksImportDialog::tr("Unable to open file.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,6 @@
|
||||
|
||||
class OperaImporter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit OperaImporter(QObject* parent = 0);
|
||||
|
||||
@ -37,10 +36,6 @@ public:
|
||||
bool error() { return m_error; }
|
||||
QString errorString() { return m_errorString; }
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QString m_path;
|
||||
QFile m_file;
|
||||
|
@ -25,7 +25,6 @@
|
||||
class QupZilla;
|
||||
class CookieJar : public QNetworkCookieJar
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CookieJar(QupZilla* mainClass, QObject* parent = 0);
|
||||
|
||||
@ -41,10 +40,6 @@ public:
|
||||
void setAllowCookies(bool allow);
|
||||
void turnPrivateJar(bool state);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QupZilla* p_QupZilla;
|
||||
bool m_allowCookies;
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 516 B After Width: | Height: | Size: 574 B |
@ -30,8 +30,6 @@ class DesktopNotification;
|
||||
|
||||
class DesktopNotification : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DesktopNotification(bool setPosition = false);
|
||||
void setPixmap(const QPixmap &icon) { m_icon = icon; }
|
||||
|
@ -98,7 +98,7 @@ void DesktopNotificationsFactory::nativeNotificationPreview()
|
||||
args.append("qupzilla");
|
||||
args.append(m_uint);
|
||||
args.append(tmp.fileName());
|
||||
args.append(tr("Native System Notification"));
|
||||
args.append(QObject::tr("Native System Notification"));
|
||||
args.append("");
|
||||
args.append(QStringList());
|
||||
args.append(QVariantMap());
|
||||
|
@ -32,20 +32,16 @@
|
||||
class DesktopNotification;
|
||||
class DesktopNotificationsFactory : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Type { DesktopNative, PopupWidget };
|
||||
|
||||
explicit DesktopNotificationsFactory(QObject* parent = 0);
|
||||
|
||||
void loadSettings();
|
||||
|
||||
void showNotifications(const QPixmap &icon, const QString &heading, const QString &text);
|
||||
void nativeNotificationPreview();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void loadSettings();
|
||||
|
||||
private:
|
||||
bool m_enabled;
|
||||
int m_timeout;
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "downloadfilehelper.h"
|
||||
#include "webpage.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "downloadoptionsdialog.h"
|
||||
#include "mainapplication.h"
|
||||
#include "qupzilla.h"
|
||||
@ -65,14 +65,15 @@ void DownloadFileHelper::handleUnsupportedContent(QNetworkReply* reply, bool ask
|
||||
|
||||
// Close Empty Tab
|
||||
if (m_webPage) {
|
||||
if (!m_webPage->mainFrame()->url().isEmpty() && m_webPage->mainFrame()->url().toString() != "about:blank") {
|
||||
m_downloadPage = m_webPage->mainFrame()->url();
|
||||
WebView* view = qobject_cast<WebView*>(m_webPage->view());
|
||||
if (!m_webPage->url().isEmpty() && m_webPage->url().toString() != "about:blank") {
|
||||
m_downloadPage = m_webPage->url();
|
||||
}
|
||||
else if (m_webPage->history()->canGoBack()) {
|
||||
m_downloadPage = m_webPage->history()->backItem().url();
|
||||
}
|
||||
else if (m_webPage->history()->count() == 0) {
|
||||
m_webPage->getView()->closeTab();
|
||||
else if (view && m_webPage->history()->count() == 0) {
|
||||
view->closeView();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -169,11 +169,14 @@ void DownloadManager::clearList()
|
||||
|
||||
void DownloadManager::download(const QNetworkRequest &request, WebPage* page, bool askWhatToDo)
|
||||
{
|
||||
if (!page) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clearing web page info from request
|
||||
QNetworkRequest req = request;
|
||||
req.setAttribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100), 0);
|
||||
req.setAttribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 101), 0);
|
||||
req.setAttribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 102), 0);
|
||||
|
||||
handleUnsupportedContent(m_networkManager->get(req), page, askWhatToDo);
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* ============================================================ */
|
||||
#include "historymodel.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "qupzilla.h"
|
||||
#include "iconprovider.h"
|
||||
#include "databasewriter.h"
|
||||
|
@ -23,17 +23,12 @@
|
||||
|
||||
class WebHistoryInterface : public QWebHistoryInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit WebHistoryInterface(QObject* parent = 0);
|
||||
|
||||
void addHistoryEntry(const QString &url);
|
||||
bool historyContains(const QString &url) const;
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QStringList m_clickedLinks;
|
||||
|
||||
|
@ -30,8 +30,6 @@ int main(int argc, char* argv[])
|
||||
Q_INIT_RESOURCE(icons);
|
||||
Q_INIT_RESOURCE(html);
|
||||
|
||||
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
|
||||
|
||||
#ifdef Q_WS_X11
|
||||
QApplication::setGraphicsSystem("raster"); // Better overall performance on X11
|
||||
#endif
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
class DownIcon : public ClickableLabel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DownIcon(QWidget* parent = 0);
|
||||
|
||||
|
@ -5,14 +5,9 @@
|
||||
|
||||
class GoIcon : public ClickableLabel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit GoIcon(QWidget* parent = 0);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent* ev);
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "locationbar.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "rssmanager.h"
|
||||
#include "mainapplication.h"
|
||||
#include "locationcompleter.h"
|
||||
@ -70,7 +70,7 @@ LocationBar::LocationBar(QupZilla* mainClass)
|
||||
|
||||
connect(this, SIGNAL(textEdited(QString)), this, SLOT(textEdit()));
|
||||
connect(this, SIGNAL(textEdited(QString)), m_locationCompleter, SLOT(refreshCompleter(QString)));
|
||||
connect(m_locationCompleter->popup(), SIGNAL(clicked(QModelIndex)), p_QupZilla, SLOT(urlEnter()));
|
||||
connect(m_locationCompleter->popup(), SIGNAL(clicked(QModelIndex)), this, SLOT(urlEnter()));
|
||||
connect(m_siteIcon, SIGNAL(clicked()), this, SLOT(showSiteInfo()));
|
||||
connect(m_goIcon, SIGNAL(clicked(QPoint)), this, SLOT(urlEnter()));
|
||||
connect(m_rssIcon, SIGNAL(clicked(QPoint)), this, SLOT(rssIconClicked()));
|
||||
@ -191,9 +191,9 @@ void LocationBar::showRSSIcon(bool state)
|
||||
m_rssIcon->setVisible(state);
|
||||
}
|
||||
|
||||
void LocationBar::showUrl(const QUrl &url, bool empty)
|
||||
void LocationBar::showUrl(const QUrl &url)
|
||||
{
|
||||
if (hasFocus() || (url.isEmpty() && empty)) {
|
||||
if (hasFocus() || url.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -206,16 +206,15 @@ void LocationBar::showUrl(const QUrl &url, bool empty)
|
||||
if (url.toEncoded() != text()) {
|
||||
setText(encodedUrl);
|
||||
}
|
||||
|
||||
p_QupZilla->statusBarMessage()->clearMessage();
|
||||
|
||||
hideGoButton();
|
||||
|
||||
m_bookmarkIcon->checkBookmark(url);
|
||||
}
|
||||
|
||||
void LocationBar::siteIconChanged()
|
||||
{
|
||||
QIcon icon_ = m_webView->siteIcon();
|
||||
QIcon icon_ = m_webView->icon();
|
||||
|
||||
if (icon_.isNull()) {
|
||||
clearIcon();
|
||||
@ -375,7 +374,8 @@ void LocationBar::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
switch (event->key()) {
|
||||
case Qt::Key_Escape:
|
||||
setText(m_webView->url().toEncoded());
|
||||
m_webView->setFocus();
|
||||
showUrl(m_webView->url());
|
||||
event->accept();
|
||||
break;
|
||||
|
||||
|
@ -38,7 +38,7 @@ class LineEdit;
|
||||
class LocationCompleter;
|
||||
class ClickableLabel;
|
||||
class BookmarkIcon;
|
||||
class WebView;
|
||||
class TabbedWebView;
|
||||
class LocationBarSettings;
|
||||
class SiteIcon;
|
||||
class GoIcon;
|
||||
@ -54,14 +54,14 @@ public:
|
||||
explicit LocationBar(QupZilla* mainClass);
|
||||
~LocationBar();
|
||||
|
||||
void setWebView(WebView* view) { m_webView = view; }
|
||||
WebView* webView() { return m_webView; }
|
||||
void setWebView(TabbedWebView* view) { m_webView = view; }
|
||||
TabbedWebView* webView() { return m_webView; }
|
||||
|
||||
signals:
|
||||
void loadUrl(const QUrl &url);
|
||||
|
||||
public slots:
|
||||
void showUrl(const QUrl &url, bool empty = true);
|
||||
void showUrl(const QUrl &url);
|
||||
virtual void setText(const QString &text);
|
||||
|
||||
private slots:
|
||||
@ -98,7 +98,7 @@ private:
|
||||
SiteIcon* m_siteIcon;
|
||||
|
||||
QupZilla* p_QupZilla;
|
||||
WebView* m_webView;
|
||||
TabbedWebView* m_webView;
|
||||
LocationCompleter* m_locationCompleter;
|
||||
LocationBarSettings* m_locationBarSettings;
|
||||
|
||||
|
@ -25,7 +25,7 @@ ReloadStopButton::ReloadStopButton(QWidget* parent)
|
||||
|
||||
m_buttonStop = new ToolButton(this);
|
||||
m_buttonStop->setObjectName("navigation-button-stop");
|
||||
m_buttonStop->setToolTip(tr("Stop"));
|
||||
m_buttonStop->setToolTip(ToolButton::tr("Stop"));
|
||||
m_buttonStop->setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
m_buttonStop->setVisible(false);
|
||||
m_buttonStop->setAutoRaise(true);
|
||||
@ -33,7 +33,7 @@ ReloadStopButton::ReloadStopButton(QWidget* parent)
|
||||
|
||||
m_buttonReload = new ToolButton(this);
|
||||
m_buttonReload->setObjectName("navigation-button-reload");
|
||||
m_buttonReload->setToolTip(tr("Reload"));
|
||||
m_buttonReload->setToolTip(ToolButton::tr("Reload"));
|
||||
m_buttonReload->setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
m_buttonReload->setAutoRaise(true);
|
||||
m_buttonReload->setFocusPolicy(Qt::NoFocus);
|
||||
|
@ -24,7 +24,6 @@
|
||||
|
||||
class ReloadStopButton : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ReloadStopButton(QWidget* parent = 0);
|
||||
~ReloadStopButton();
|
||||
@ -35,10 +34,6 @@ public:
|
||||
ToolButton* buttonStop() { return m_buttonStop; }
|
||||
ToolButton* buttonReload() { return m_buttonReload; }
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
ToolButton* m_buttonStop;
|
||||
ToolButton* m_buttonReload;
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "siteicon.h"
|
||||
#include "locationbar.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
|
||||
SiteIcon::SiteIcon(LocationBar* parent)
|
||||
: ToolButton(parent)
|
||||
@ -26,7 +26,7 @@ SiteIcon::SiteIcon(LocationBar* parent)
|
||||
setObjectName("locationbar-siteicon");
|
||||
setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
setCursor(Qt::ArrowCursor);
|
||||
setToolTip(tr("Show information about this page"));
|
||||
setToolTip(LocationBar::tr("Show information about this page"));
|
||||
setFocusPolicy(Qt::ClickFocus);
|
||||
}
|
||||
|
||||
@ -44,6 +44,10 @@ void SiteIcon::mousePressEvent(QMouseEvent* e)
|
||||
|
||||
void SiteIcon::mouseMoveEvent(QMouseEvent* e)
|
||||
{
|
||||
if (!m_locationBar) {
|
||||
return;
|
||||
}
|
||||
|
||||
int manhattanLength = (e->pos() - m_dragStartPosition).manhattanLength();
|
||||
if (manhattanLength <= QApplication::startDragDistance()) {
|
||||
ToolButton::mouseMoveEvent(e);
|
||||
|
@ -25,14 +25,9 @@
|
||||
class LocationBar;
|
||||
class SiteIcon : public ToolButton
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SiteIcon(LocationBar* parent);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent* e);
|
||||
void mouseMoveEvent(QMouseEvent* e);
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "websearchbar.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "webpage.h"
|
||||
#include "clickablelabel.h"
|
||||
#include "buttonwithmenu.h"
|
||||
@ -151,7 +151,7 @@ void WebSearchBar::searchInNewTab()
|
||||
void WebSearchBar::completeMenuWithAvailableEngines(QMenu* menu)
|
||||
{
|
||||
WebView* view = p_QupZilla->weView();
|
||||
QWebFrame* frame = view->webPage()->mainFrame();
|
||||
QWebFrame* frame = view->page()->mainFrame();
|
||||
|
||||
QWebElementCollection elements = frame->documentElement().findAll(QLatin1String("link[rel=search]"));
|
||||
foreach(QWebElement element, elements) {
|
||||
|
@ -116,13 +116,11 @@ void NetworkManager::setSSLConfiguration(QNetworkReply* reply)
|
||||
QNetworkRequest request = reply->request();
|
||||
QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
|
||||
WebPage* webPage = static_cast<WebPage*>(v.value<void*>());
|
||||
v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 102));
|
||||
WebView* webView = static_cast<WebView*>(v.value<void*>());
|
||||
if (!webPage || !webView) {
|
||||
if (!webPage) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (webView->url().host() == reply->url().host()) {
|
||||
if (webPage->url().host() == reply->url().host()) {
|
||||
webPage->setSSLCertificate(cert);
|
||||
}
|
||||
}
|
||||
@ -186,7 +184,8 @@ void NetworkManager::sslError(QNetworkReply* reply, QList<QSslError> errors)
|
||||
QString message = QString("<b>%1</b><p>%2</p>%3<p>%4</p>").arg(title, text1, certs, text2);
|
||||
|
||||
if (!certs.isEmpty()) {
|
||||
if (!webPage->javaScriptConfirm(webPage->mainFrame(), message)) {
|
||||
if (QMessageBox::critical(webPage->view(), tr("SSL Certificate Error!"), message,
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,6 @@ public:
|
||||
void disconnectObjects();
|
||||
|
||||
signals:
|
||||
void finishLoading(bool state);
|
||||
void wantsFocus(const QUrl &url);
|
||||
void sslDialogClosed();
|
||||
|
||||
|
@ -23,29 +23,21 @@
|
||||
|
||||
NetworkManagerProxy::NetworkManagerProxy(QObject* parent)
|
||||
: QNetworkAccessManager(parent)
|
||||
, m_view(0)
|
||||
, m_page(0)
|
||||
, m_manager(0)
|
||||
{
|
||||
setCookieJar(mApp->cookieJar());
|
||||
}
|
||||
|
||||
void NetworkManagerProxy::populateNetworkRequest(QNetworkRequest &request)
|
||||
{
|
||||
qDebug() << __FUNCTION__ << "called";
|
||||
QVariant variant = qVariantFromValue((void*) m_page);
|
||||
request.setAttribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100), variant);
|
||||
}
|
||||
|
||||
void NetworkManagerProxy::setPrimaryNetworkAccessManager(NetworkManager* manager)
|
||||
{
|
||||
Q_ASSERT(manager);
|
||||
m_manager = manager;
|
||||
|
||||
connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), manager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)));
|
||||
connect(this, SIGNAL(proxyAuthenticationRequired(QNetworkProxy, QAuthenticator*)), manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy, QAuthenticator*)));
|
||||
connect(this, SIGNAL(finished(QNetworkReply*)), manager, SIGNAL(finished(QNetworkReply*)));
|
||||
connect(this, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)), manager, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)));
|
||||
connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), m_manager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)));
|
||||
connect(this, SIGNAL(proxyAuthenticationRequired(QNetworkProxy, QAuthenticator*)), m_manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy, QAuthenticator*)));
|
||||
connect(this, SIGNAL(finished(QNetworkReply*)), m_manager, SIGNAL(finished(QNetworkReply*)));
|
||||
connect(this, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)), m_manager, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)));
|
||||
}
|
||||
|
||||
QNetworkReply* NetworkManagerProxy::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice* outgoingData)
|
||||
@ -60,6 +52,11 @@ QNetworkReply* NetworkManagerProxy::createRequest(QNetworkAccessManager::Operati
|
||||
return QNetworkAccessManager::createRequest(op, request, outgoingData);
|
||||
}
|
||||
|
||||
void NetworkManagerProxy::disconnectObjects()
|
||||
{
|
||||
disconnect(m_manager);
|
||||
}
|
||||
|
||||
NetworkManagerProxy::~NetworkManagerProxy()
|
||||
{
|
||||
// Prevent deleting of cookie jar
|
||||
|
@ -22,28 +22,23 @@
|
||||
#include <QNetworkRequest>
|
||||
#include <QNetworkAccessManager>
|
||||
|
||||
class WebView;
|
||||
class WebPage;
|
||||
class NetworkManager;
|
||||
|
||||
class NetworkManagerProxy : public QNetworkAccessManager
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit NetworkManagerProxy(QObject* parent = 0);
|
||||
~NetworkManagerProxy();
|
||||
|
||||
void setView(WebView* view) { m_view = view; }
|
||||
void setPage(WebPage* page) { m_page = page; }
|
||||
|
||||
void setPrimaryNetworkAccessManager(NetworkManager* manager);
|
||||
|
||||
QNetworkReply* createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice* outgoingData);
|
||||
|
||||
protected:
|
||||
virtual void populateNetworkRequest(QNetworkRequest &request);
|
||||
void disconnectObjects();
|
||||
|
||||
private:
|
||||
WebView* m_view;
|
||||
WebPage* m_page;
|
||||
NetworkManager* m_manager;
|
||||
};
|
||||
|
@ -28,8 +28,12 @@ QString authorString(const QString &name, const QString &mail)
|
||||
return QString("%1 <<a href=\"mailto:%2\">%2</a>>").arg(name, mail);
|
||||
}
|
||||
|
||||
QupZillaSchemeHandler::QupZillaSchemeHandler(QObject* parent)
|
||||
: QObject(parent)
|
||||
QString authorString(const char* name, const QString &mail)
|
||||
{
|
||||
return authorString(QString::fromUtf8(name), mail);
|
||||
}
|
||||
|
||||
QupZillaSchemeHandler::QupZillaSchemeHandler()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -25,18 +25,12 @@
|
||||
#include <QTimer>
|
||||
#include <QTextStream>
|
||||
|
||||
class QupZillaSchemeHandler : public QObject
|
||||
class QupZillaSchemeHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QupZillaSchemeHandler(QObject* parent = 0);
|
||||
explicit QupZillaSchemeHandler();
|
||||
|
||||
QNetworkReply* createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice* outgoingData);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
};
|
||||
|
||||
class QupZillaSchemeReply : public QNetworkReply
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "aboutdialog.h"
|
||||
#include "ui_aboutdialog.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "webpage.h"
|
||||
#include "qtwin.h"
|
||||
|
||||
@ -77,30 +77,30 @@ void AboutDialog::showAuthors()
|
||||
m_authorsHtml.append("<div style='margin:10px;'>");
|
||||
m_authorsHtml.append(tr("<p><b>Main developer:</b><br/>%1 <%2></p>").arg(QupZilla::AUTHOR, "<a href=mailto:nowrep@gmail.com>nowrep@gmail.com</a>"));
|
||||
m_authorsHtml.append(tr("<p><b>Contributors:</b><br/>%1</p>").arg(
|
||||
"Mladen Pejaković<br/>"
|
||||
"Bryan M Dunsmore<br/>"
|
||||
"Mariusz Fik<br/>"
|
||||
"Jan Rajnoha<br/>"
|
||||
"Daniele Cocca"
|
||||
QString::fromUtf8("Mladen Pejaković<br/>"
|
||||
"Bryan M Dunsmore<br/>"
|
||||
"Mariusz Fik<br/>"
|
||||
"Jan Rajnoha<br/>"
|
||||
"Daniele Cocca")
|
||||
));
|
||||
m_authorsHtml.append(tr("<p><b>Translators:</b><br/>%1</p>").arg(
|
||||
"Heimen Stoffels (Dutch)<br/>"
|
||||
"Peter Vacula (Slovakia)<br/>"
|
||||
"Ján Ďanovský (Slovakia)<br/>"
|
||||
"Jonathan Hooverman (German)<br/>"
|
||||
"Unink-Lio (Chinese)<br/>"
|
||||
"Federico Fabiani (Italy)<br/>"
|
||||
"Francesco Marinucci (Italy)<br/>"
|
||||
"Jorge Sevilla (Spanish)<br/>"
|
||||
"Michał Szymanowski (Polish)<br/>"
|
||||
"Mariusz Fik (Polish)<br/>"
|
||||
"Jérôme Giry (French)<br/>"
|
||||
"Nicolas Ourceau (French)<br/>"
|
||||
"Vasilis Tsivikis (Greek)<br/>"
|
||||
"Alexander Maslov (Russian)<br/>"
|
||||
"Oleg Brezhnev (Russian)<br/>"
|
||||
"Sérgio Marques (Portuguese)<br/>"
|
||||
"Mladen Pejaković (Serbian)"
|
||||
QString::fromUtf8("Heimen Stoffels (Dutch)<br/>"
|
||||
"Peter Vacula (Slovakia)<br/>"
|
||||
"Ján Ďanovský (Slovakia)<br/>"
|
||||
"Jonathan Hooverman (German)<br/>"
|
||||
"Unink-Lio (Chinese)<br/>"
|
||||
"Federico Fabiani (Italy)<br/>"
|
||||
"Francesco Marinucci (Italy)<br/>"
|
||||
"Jorge Sevilla (Spanish)<br/>"
|
||||
"Michał Szymanowski (Polish)<br/>"
|
||||
"Mariusz Fik (Polish)<br/>"
|
||||
"Jérôme Giry (French)<br/>"
|
||||
"Nicolas Ourceau (French)<br/>"
|
||||
"Vasilis Tsivikis (Greek)<br/>"
|
||||
"Alexander Maslov (Russian)<br/>"
|
||||
"Oleg Brezhnev (Russian)<br/>"
|
||||
"Sérgio Marques (Portuguese)<br/>"
|
||||
"Mladen Pejaković (Serbian)")
|
||||
));
|
||||
m_authorsHtml.append("</div>");
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget* parent)
|
||||
, m_rssLoaded(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
Settings settings;
|
||||
settings.beginGroup("BrowsingLibrary");
|
||||
resize(settings.value("size", QSize(760, 470)).toSize());
|
||||
|
@ -36,10 +36,6 @@ class ClearPrivateData : public QDialog
|
||||
public:
|
||||
explicit ClearPrivateData(QupZilla* mainClass, QWidget* parent = 0);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private slots:
|
||||
void historyClicked(bool state);
|
||||
void dialogAccepted();
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "pagescreen.h"
|
||||
#include "ui_pagescreen.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "globalfunctions.h"
|
||||
|
||||
PageScreen::PageScreen(WebView* view, QWidget* parent)
|
||||
|
@ -16,7 +16,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* ============================================================ */
|
||||
#include "sourceviewer.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "htmlhighlighter.h"
|
||||
#include "sourceviewersearch.h"
|
||||
#include "globalfunctions.h"
|
||||
@ -134,10 +134,15 @@ void SourceViewer::findText()
|
||||
|
||||
void SourceViewer::reload()
|
||||
{
|
||||
m_sourceEdit->clear();
|
||||
m_sourceEdit->insertPlainText(m_frame->toHtml());
|
||||
if (m_frame) {
|
||||
m_sourceEdit->clear();
|
||||
m_sourceEdit->insertPlainText(m_frame.data()->toHtml());
|
||||
|
||||
m_statusBar->showMessage(tr("Source reloaded"));
|
||||
m_statusBar->showMessage(tr("Source reloaded"));
|
||||
}
|
||||
else {
|
||||
m_statusBar->showMessage(tr("Cannot reload source. Page has been closed."));
|
||||
}
|
||||
}
|
||||
|
||||
void SourceViewer::setTextEditable()
|
||||
|
@ -54,7 +54,7 @@ private slots:
|
||||
private:
|
||||
QBoxLayout* m_layout;
|
||||
QTextEdit* m_sourceEdit;
|
||||
QWebFrame* m_frame;
|
||||
QWeakPointer<QWebFrame> m_frame;
|
||||
QStatusBar* m_statusBar;
|
||||
};
|
||||
|
||||
|
@ -28,8 +28,6 @@ class TipLabel;
|
||||
|
||||
class TipLabel : public SqueezeLabelV1
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TipLabel(QupZilla* parent);
|
||||
|
||||
@ -45,17 +43,12 @@ private:
|
||||
|
||||
class StatusBarMessage : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit StatusBarMessage(QupZilla* mainClass);
|
||||
|
||||
void showMessage(const QString &message);
|
||||
void clearMessage();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QupZilla* p_QupZilla;
|
||||
TipLabel* m_statusBarText;
|
||||
|
@ -286,7 +286,7 @@ void ClickToFlash::showInfo()
|
||||
}
|
||||
|
||||
widg->setMaximumHeight(500);
|
||||
qz_centerWidgetToParent(widg, m_page->qupzilla());
|
||||
qz_centerWidgetToParent(widg, m_page->view());
|
||||
widg->show();
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
|
||||
SpeedDial::SpeedDial(QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_maxPagesInRow(4)
|
||||
, m_sizeOfSpeedDials(231)
|
||||
, m_loaded(false)
|
||||
, m_regenerateScript(true)
|
||||
{
|
||||
|
@ -35,7 +35,7 @@ QObject* WebPluginFactory::create(const QString &mimeType, const QUrl &url, cons
|
||||
}
|
||||
|
||||
if (mime != "application/x-shockwave-flash") {
|
||||
if (mime != "application/futuresplash") {
|
||||
if (mime != "application/futuresplash" && mime != "application/x-java-applet") {
|
||||
qDebug() << "WebPluginFactory::create missing mimeType handler for: " << mime;
|
||||
}
|
||||
return 0;
|
||||
|
@ -24,8 +24,6 @@
|
||||
class WebPage;
|
||||
class WebPluginFactory : public QWebPluginFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
WebPluginFactory(QObject* parent);
|
||||
virtual QObject* create(const QString &mimeType, const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues) const;
|
||||
|
@ -33,6 +33,7 @@ ThemeManager::ThemeManager(QWidget* parent)
|
||||
{
|
||||
ui->setupUi(parent);
|
||||
ui->license->hide();
|
||||
|
||||
Settings settings;
|
||||
settings.beginGroup("Themes");
|
||||
m_activeTheme = settings.value("activeTheme", DEFAULT_THEME_NAME).toString();
|
||||
|
@ -1,3 +1,20 @@
|
||||
/* ============================================================
|
||||
* QupZilla - WebKit based browser
|
||||
* Copyright (C) 2010-2012 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 "rssicon.h"
|
||||
|
||||
RssIcon::RssIcon(QWidget* parent)
|
||||
|
@ -1,3 +1,20 @@
|
||||
/* ============================================================
|
||||
* QupZilla - WebKit based browser
|
||||
* Copyright (C) 2010-2012 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 RSSICON_H
|
||||
#define RSSICON_H
|
||||
|
||||
@ -9,10 +26,6 @@ class RssIcon : public ClickableLabel
|
||||
public:
|
||||
explicit RssIcon(QWidget* parent = 0);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent* ev);
|
||||
};
|
||||
|
@ -28,7 +28,7 @@ RSSNotification::RSSNotification(QString host, QWidget* parent)
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->setupUi(widget());
|
||||
ui->closeButton->setIcon(IconProvider::standardIcon(QStyle::SP_DialogCloseButton));
|
||||
ui->label->setText(tr("You have successfully added RSS feed \"%1\".").arg(host));
|
||||
ui->label->setText(QupZilla::tr("You have successfully added RSS feed \"%1\".").arg(host));
|
||||
|
||||
connect(ui->pushButton, SIGNAL(clicked()), mApp->getWindow(), SLOT(showRSSManager()));
|
||||
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
|
@ -30,8 +30,6 @@ class RSSNotification;
|
||||
class AnimatedWidget;
|
||||
class RSSNotification : public AnimatedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit RSSNotification(QString host, QWidget* parent = 0);
|
||||
~RSSNotification();
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "rsswidget.h"
|
||||
#include "ui_rsswidget.h"
|
||||
#include "mainapplication.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "rssmanager.h"
|
||||
#include "rssnotification.h"
|
||||
|
||||
@ -107,7 +107,7 @@ void RSSWidget::addRss()
|
||||
title = button->toolTip();
|
||||
}
|
||||
|
||||
if (mApp->rssManager()->addRssFeed(urlString, title, m_view->siteIcon())) {
|
||||
if (mApp->rssManager()->addRssFeed(urlString, title, m_view->icon())) {
|
||||
RSSNotification* notif = new RSSNotification(title, m_view);
|
||||
m_view->addNotification(notif);
|
||||
close();
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include "ui_bookmarkssidebar.h"
|
||||
#include "qupzilla.h"
|
||||
#include "iconprovider.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "bookmarkstoolbar.h"
|
||||
#include "tabwidget.h"
|
||||
#include "bookmarksmodel.h"
|
||||
|
@ -29,7 +29,6 @@ namespace Ui
|
||||
class BookmarksSideBar;
|
||||
}
|
||||
|
||||
class WebView;
|
||||
class QupZilla;
|
||||
class BookmarksModel;
|
||||
class BookmarksSideBar : public QWidget
|
||||
|
20
src/src.pro
20
src/src.pro
@ -38,6 +38,7 @@ TRANSLATIONS +=../translations/cs_CZ.ts\
|
||||
../translations/pt_PT.ts\
|
||||
../translations/sr_BA.ts\
|
||||
../translations/sr_RS.ts\
|
||||
../translations/sv_SE.ts\
|
||||
../translations/empty.ts\
|
||||
|
||||
INCLUDEPATH += 3rdparty\
|
||||
@ -62,6 +63,7 @@ INCLUDEPATH += 3rdparty\
|
||||
desktopnotifications\
|
||||
opensearch\
|
||||
bookmarksimport\
|
||||
popupwindow\
|
||||
|
||||
SOURCES += main.cpp\
|
||||
3rdparty/qtwin.cpp \
|
||||
@ -88,7 +90,6 @@ SOURCES += main.cpp\
|
||||
preferences/preferences.cpp \
|
||||
rss/rssmanager.cpp \
|
||||
other/clearprivatedata.cpp \
|
||||
webview/webview.cpp \
|
||||
webview/webpage.cpp \
|
||||
webview/tabwidget.cpp \
|
||||
webview/tabbar.cpp \
|
||||
@ -185,7 +186,13 @@ SOURCES += main.cpp\
|
||||
navigation/downicon.cpp \
|
||||
network/cabundleupdater.cpp \
|
||||
app/settings.cpp \
|
||||
app/proxystyle.cpp
|
||||
app/proxystyle.cpp \
|
||||
popupwindow/popupwebpage.cpp \
|
||||
webview/popupwebview.cpp \
|
||||
popupwindow/popupwindow.cpp \
|
||||
popupwindow/popuplocationbar.cpp \
|
||||
webview/tabbedwebview.cpp \
|
||||
webview/webview.cpp
|
||||
|
||||
HEADERS += \
|
||||
3rdparty/qtwin.h \
|
||||
@ -212,7 +219,6 @@ HEADERS += \
|
||||
preferences/preferences.h \
|
||||
rss/rssmanager.h \
|
||||
other/clearprivatedata.h \
|
||||
webview/webview.h \
|
||||
webview/webpage.h \
|
||||
webview/tabwidget.h \
|
||||
webview/tabbar.h \
|
||||
@ -311,7 +317,13 @@ HEADERS += \
|
||||
navigation/downicon.h \
|
||||
network/cabundleupdater.h \
|
||||
app/settings.h \
|
||||
app/proxystyle.h
|
||||
app/proxystyle.h \
|
||||
popupwindow/popupwebpage.h \
|
||||
webview/popupwebview.h \
|
||||
popupwindow/popupwindow.h \
|
||||
popupwindow/popuplocationbar.h \
|
||||
webview/tabbedwebview.h \
|
||||
webview/webview.h
|
||||
|
||||
FORMS += \
|
||||
preferences/autofillmanager.ui \
|
||||
|
@ -283,7 +283,7 @@ QString CertificateInfoWidget::clearCertSpecialSymbols(const QString &string)
|
||||
QString CertificateInfoWidget::showCertInfo(const QString &string)
|
||||
{
|
||||
if (string.isEmpty()) {
|
||||
return tr("<not set in certificate>");
|
||||
return QObject::tr("<not set in certificate>");
|
||||
}
|
||||
else {
|
||||
return clearCertSpecialSymbols(string);
|
||||
|
@ -30,8 +30,6 @@ class CertificateInfoWidget;
|
||||
|
||||
class CertificateInfoWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit CertificateInfoWidget(const QSslCertificate &cert, QWidget* parent = 0);
|
||||
~CertificateInfoWidget();
|
||||
|
@ -24,7 +24,6 @@
|
||||
class WebView;
|
||||
class ClosedTabsManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ClosedTabsManager(QObject* parent = 0);
|
||||
struct Tab {
|
||||
@ -49,10 +48,6 @@ public:
|
||||
|
||||
QList<ClosedTabsManager::Tab> allClosedTabs() { return m_closedTabs; }
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QList<ClosedTabsManager::Tab> m_closedTabs;
|
||||
|
||||
|
@ -24,8 +24,6 @@
|
||||
|
||||
class DockTitleBarWidget : public QWidget, public Ui_DockTitleBarWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DockTitleBarWidget(const QString &title, QWidget* parent = 0);
|
||||
~DockTitleBarWidget();
|
||||
|
@ -23,14 +23,9 @@
|
||||
|
||||
class Frame : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Frame(QWidget* parent = 0);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
|
||||
|
@ -66,8 +66,6 @@ class QTextDocument;
|
||||
|
||||
class HtmlHighlighter : public QSyntaxHighlighter
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
HtmlHighlighter(QTextDocument* parent = 0);
|
||||
|
||||
|
@ -36,7 +36,7 @@ void IconProvider::saveIcon(WebView* view)
|
||||
item.image = view->icon().pixmap(16, 16).toImage();
|
||||
item.url = view->url();
|
||||
|
||||
if (item.image.isNull()) {
|
||||
if (item.image == QWebSettings::webGraphic(QWebSettings::DefaultFrameIconGraphic).toImage()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -22,8 +22,8 @@ ProgressBar::ProgressBar(QWidget* parent)
|
||||
, m_value(0)
|
||||
, m_lastPaintedValue(-1)
|
||||
{
|
||||
setMinimumSize(QSize(130, 16));
|
||||
setMaximumSize(QSize(150, 16));
|
||||
setMinimumSize(130, 16);
|
||||
setMaximumSize(150, 16);
|
||||
}
|
||||
|
||||
void ProgressBar::setValue(int value)
|
||||
@ -51,8 +51,11 @@ void ProgressBar::initStyleOption(QStyleOptionProgressBar* option)
|
||||
void ProgressBar::paintEvent(QPaintEvent*)
|
||||
{
|
||||
QStylePainter paint(this);
|
||||
|
||||
QStyleOptionProgressBarV2 opt;
|
||||
initStyleOption(&opt);
|
||||
|
||||
paint.drawControl(QStyle::CE_ProgressBar, opt);
|
||||
|
||||
m_lastPaintedValue = m_value;
|
||||
}
|
||||
|
@ -40,7 +40,6 @@ protected:
|
||||
private:
|
||||
int m_value;
|
||||
int m_lastPaintedValue;
|
||||
|
||||
};
|
||||
|
||||
#endif // PROGRESSBAR_H
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "searchtoolbar.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "lineedit.h"
|
||||
#include "ui_searchtoolbar.h"
|
||||
#include "iconprovider.h"
|
||||
|
@ -17,9 +17,9 @@
|
||||
* ============================================================ */
|
||||
#include "siteinfo.h"
|
||||
#include "ui_siteinfo.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "webpage.h"
|
||||
#include "mainapplication.h"
|
||||
#include "downloaditem.h"
|
||||
#include "certificateinfowidget.h"
|
||||
#include "globalfunctions.h"
|
||||
@ -35,12 +35,12 @@ QString SiteInfo::showCertInfo(const QString &string)
|
||||
}
|
||||
}
|
||||
|
||||
SiteInfo::SiteInfo(QupZilla* mainClass, QWidget* parent)
|
||||
SiteInfo::SiteInfo(WebView* view, QWidget* parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::SiteInfo)
|
||||
, p_QupZilla(mainClass)
|
||||
, m_certWidget(0)
|
||||
{
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->listWidget->item(0)->setIcon(QIcon::fromTheme("document-properties", QIcon(":/icons/preferences/document-properties.png")));
|
||||
@ -48,16 +48,16 @@ SiteInfo::SiteInfo(QupZilla* mainClass, QWidget* parent)
|
||||
ui->listWidget->item(2)->setIcon(QIcon::fromTheme("dialog-password", QIcon(":/icons/preferences/dialog-password.png")));
|
||||
ui->listWidget->item(0)->setSelected(true);
|
||||
|
||||
WebView* view = p_QupZilla->weView();
|
||||
WebPage* webPage = qobject_cast<WebPage*>(view->page());
|
||||
QWebFrame* frame = view->page()->mainFrame();
|
||||
QString title = view->title();
|
||||
QSslCertificate cert = view->webPage()->sslCertificate();
|
||||
QSslCertificate cert = webPage->sslCertificate();
|
||||
m_baseUrl = view->url();
|
||||
|
||||
//GENERAL
|
||||
ui->heading->setText(QString("<b>%1</b>:").arg(title));
|
||||
ui->siteAddress->setText(frame->baseUrl().toString());
|
||||
ui->sizeLabel->setText(DownloadItem::fileSizeToString(view->webPage()->totalBytes()));
|
||||
ui->sizeLabel->setText(DownloadItem::fileSizeToString(webPage->totalBytes()));
|
||||
QString encoding;
|
||||
|
||||
//Meta
|
||||
|
@ -29,14 +29,14 @@ namespace Ui
|
||||
class SiteInfo;
|
||||
}
|
||||
|
||||
class QupZilla;
|
||||
class WebView;
|
||||
class CertificateInfoWidget;
|
||||
class SiteInfo : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SiteInfo(QupZilla* mainClass, QWidget* parent = 0);
|
||||
explicit SiteInfo(WebView* view, QWidget* parent = 0);
|
||||
~SiteInfo();
|
||||
|
||||
static QString showCertInfo(const QString &string);
|
||||
@ -52,7 +52,6 @@ private slots:
|
||||
|
||||
private:
|
||||
Ui::SiteInfo* ui;
|
||||
QupZilla* p_QupZilla;
|
||||
CertificateInfoWidget* m_certWidget;
|
||||
|
||||
QPixmap m_activePixmap;
|
||||
|
@ -29,9 +29,10 @@ SiteInfoWidget::SiteInfoWidget(QupZilla* mainClass, QWidget* parent)
|
||||
ui->setupUi(this);
|
||||
|
||||
WebView* view = p_QupZilla->weView();
|
||||
WebPage* webPage = qobject_cast<WebPage*>(view->page());
|
||||
QUrl url = view->url();
|
||||
|
||||
if (view->webPage()->sslCertificate().isValid()) {
|
||||
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"));
|
||||
}
|
||||
|
@ -31,7 +31,6 @@ class QupZilla;
|
||||
class SiteInfoWidget : public QMenu
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SiteInfoWidget(QupZilla* mainClass, QWidget* parent = 0);
|
||||
~SiteInfoWidget();
|
||||
|
@ -271,7 +271,7 @@ void TabBar::closeCurrentTab()
|
||||
|
||||
void TabBar::bookmarkTab()
|
||||
{
|
||||
p_QupZilla->addBookmark(p_QupZilla->weView(m_clickedTab)->url(), p_QupZilla->weView(m_clickedTab)->title(), p_QupZilla->weView(m_clickedTab)->siteIcon());
|
||||
p_QupZilla->addBookmark(p_QupZilla->weView(m_clickedTab)->url(), p_QupZilla->weView(m_clickedTab)->title(), p_QupZilla->weView(m_clickedTab)->icon());
|
||||
}
|
||||
|
||||
void TabBar::pinTab()
|
||||
|
629
src/webview/tabbedwebview.cpp
Normal file
629
src/webview/tabbedwebview.cpp
Normal file
@ -0,0 +1,629 @@
|
||||
/* ============================================================
|
||||
* QupZilla - WebKit based browser
|
||||
* Copyright (C) 2010-2012 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 "tabbedwebview.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webpage.h"
|
||||
#include "tabwidget.h"
|
||||
#include "networkmanager.h"
|
||||
#include "mainapplication.h"
|
||||
#include "tabbar.h"
|
||||
#include "pluginproxy.h"
|
||||
#include "webtab.h"
|
||||
#include "statusbarmessage.h"
|
||||
#include "progressbar.h"
|
||||
#include "navigationbar.h"
|
||||
#include "iconprovider.h"
|
||||
#include "searchenginesmanager.h"
|
||||
|
||||
TabbedWebView::TabbedWebView(QupZilla* mainClass, WebTab* webTab)
|
||||
: WebView(webTab)
|
||||
, p_QupZilla(mainClass)
|
||||
, m_tabWidget(p_QupZilla->tabWidget())
|
||||
, m_page(0)
|
||||
, m_webTab(webTab)
|
||||
, m_menu(new QMenu(this))
|
||||
, m_clickedFrame(0)
|
||||
, m_mouseTrack(false)
|
||||
, m_navigationVisible(false)
|
||||
, m_hasRss(false)
|
||||
, m_rssChecked(false)
|
||||
{
|
||||
connect(this, SIGNAL(loadStarted()), this, SLOT(slotLoadStarted()));
|
||||
connect(this, SIGNAL(loadProgress(int)), this, SLOT(loadingProgress(int)));
|
||||
connect(this, SIGNAL(loadFinished(bool)), this, SLOT(slotLoadFinished()));
|
||||
|
||||
connect(this, SIGNAL(urlChanged(QUrl)), this, SLOT(urlChanged(QUrl)));
|
||||
connect(this, SIGNAL(titleChanged(QString)), this, SLOT(titleChanged()));
|
||||
connect(this, SIGNAL(iconChanged()), this, SLOT(slotIconChanged()));
|
||||
|
||||
connect(this, SIGNAL(statusBarMessage(QString)), p_QupZilla->statusBar(), SLOT(showMessage(QString)));
|
||||
|
||||
connect(mApp->networkManager(), SIGNAL(wantsFocus(QUrl)), this, SLOT(getFocus(QUrl)));
|
||||
|
||||
connect(p_QupZilla, SIGNAL(setWebViewMouseTracking(bool)), this, SLOT(trackMouse(bool)));
|
||||
|
||||
// Tracking mouse also on tabs created in fullscreen
|
||||
trackMouse(p_QupZilla->isFullScreen());
|
||||
}
|
||||
|
||||
void TabbedWebView::setWebPage(WebPage* page)
|
||||
{
|
||||
if (m_page == page) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_page) {
|
||||
delete m_page;
|
||||
m_page = 0;
|
||||
}
|
||||
|
||||
m_page = page;
|
||||
m_page->setWebView(this);
|
||||
m_page->setParent(this);
|
||||
setPage(m_page);
|
||||
|
||||
connect(m_page, SIGNAL(linkHovered(QString, QString, QString)), this, SLOT(linkHovered(QString, QString, QString)));
|
||||
connect(m_page, SIGNAL(windowCloseRequested()), this, SLOT(closeView()));
|
||||
|
||||
// Set default zoom
|
||||
setZoom(mApp->defaultZoom());
|
||||
}
|
||||
|
||||
void TabbedWebView::slotIconChanged()
|
||||
{
|
||||
if (url().scheme() == "file" || url().scheme() == "qupzilla" || title().contains(tr("Failed loading page"))) {
|
||||
return;
|
||||
}
|
||||
|
||||
mApp->iconProvider()->saveIcon(this);
|
||||
|
||||
showIcon();
|
||||
}
|
||||
|
||||
WebPage* TabbedWebView::webPage() const
|
||||
{
|
||||
return m_page;
|
||||
}
|
||||
|
||||
WebTab* TabbedWebView::webTab() const
|
||||
{
|
||||
return m_webTab;
|
||||
}
|
||||
|
||||
QString TabbedWebView::getIp() const
|
||||
{
|
||||
return m_currentIp;
|
||||
}
|
||||
|
||||
bool TabbedWebView::isCurrent()
|
||||
{
|
||||
WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(m_tabWidget->currentIndex()));
|
||||
if (!webTab) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (webTab->view() == this);
|
||||
}
|
||||
|
||||
void TabbedWebView::urlChanged(const QUrl &url)
|
||||
{
|
||||
if (isCurrent()) {
|
||||
p_QupZilla->navigationBar()->refreshHistory();
|
||||
}
|
||||
|
||||
if (lastUrl() != url) {
|
||||
emit changed();
|
||||
}
|
||||
}
|
||||
|
||||
void TabbedWebView::loadingProgress(int prog)
|
||||
{
|
||||
if (prog > 60) {
|
||||
checkRss();
|
||||
}
|
||||
|
||||
if (isCurrent()) {
|
||||
p_QupZilla->updateLoadingActions();
|
||||
}
|
||||
}
|
||||
|
||||
void TabbedWebView::slotLoadStarted()
|
||||
{
|
||||
m_rssChecked = false;
|
||||
emit rssChanged(false);
|
||||
|
||||
animationLoading(tabIndex(), true);
|
||||
|
||||
if (title().isNull()) {
|
||||
m_tabWidget->setTabText(tabIndex(), tr("Loading..."));
|
||||
}
|
||||
|
||||
m_currentIp.clear();
|
||||
}
|
||||
|
||||
void TabbedWebView::slotLoadFinished()
|
||||
{
|
||||
QMovie* mov = animationLoading(tabIndex(), false)->movie();
|
||||
if (mov) {
|
||||
mov->stop();
|
||||
}
|
||||
|
||||
showIcon();
|
||||
QHostInfo::lookupHost(url().host(), this, SLOT(setIp(QHostInfo)));
|
||||
|
||||
if (isCurrent()) {
|
||||
p_QupZilla->updateLoadingActions();
|
||||
}
|
||||
}
|
||||
|
||||
QLabel* TabbedWebView::animationLoading(int index, bool addMovie)
|
||||
{
|
||||
if (index == -1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
QLabel* loadingAnimation = qobject_cast<QLabel*>(m_tabWidget->getTabBar()->tabButton(index, QTabBar::LeftSide));
|
||||
if (!loadingAnimation) {
|
||||
loadingAnimation = new QLabel();
|
||||
}
|
||||
if (addMovie && !loadingAnimation->movie()) {
|
||||
QMovie* movie = new QMovie(":icons/other/progress.gif", QByteArray(), loadingAnimation);
|
||||
movie->setSpeed(70);
|
||||
loadingAnimation->setMovie(movie);
|
||||
movie->start();
|
||||
}
|
||||
else if (loadingAnimation->movie()) {
|
||||
loadingAnimation->movie()->stop();
|
||||
}
|
||||
|
||||
m_tabWidget->getTabBar()->setTabButton(index, QTabBar::LeftSide, 0);
|
||||
m_tabWidget->getTabBar()->setTabButton(index, QTabBar::LeftSide, loadingAnimation);
|
||||
return loadingAnimation;
|
||||
}
|
||||
|
||||
void TabbedWebView::stopAnimation()
|
||||
{
|
||||
QMovie* mov = animationLoading(tabIndex(), false)->movie();
|
||||
if (mov) {
|
||||
mov->stop();
|
||||
}
|
||||
|
||||
showIcon();
|
||||
}
|
||||
|
||||
void TabbedWebView::setIp(const QHostInfo &info)
|
||||
{
|
||||
if (info.addresses().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_currentIp = info.hostName() + " (" + info.addresses().at(0).toString() + ")";
|
||||
|
||||
if (isCurrent()) {
|
||||
emit ipChanged(m_currentIp);
|
||||
}
|
||||
}
|
||||
|
||||
void TabbedWebView::titleChanged()
|
||||
{
|
||||
QString t = title();
|
||||
m_tabWidget->setTabToolTip(tabIndex(), t);
|
||||
|
||||
if (isCurrent()) {
|
||||
p_QupZilla->setWindowTitle(tr("%1 - QupZilla").arg(t));
|
||||
}
|
||||
|
||||
m_tabWidget->setTabText(tabIndex(), t);
|
||||
}
|
||||
|
||||
void TabbedWebView::showIcon()
|
||||
{
|
||||
if (isLoading()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QIcon icon_ = icon();
|
||||
if (!icon_.isNull()) {
|
||||
animationLoading(tabIndex(), false)->setPixmap(icon_.pixmap(16, 16));
|
||||
}
|
||||
else {
|
||||
animationLoading(tabIndex(), false)->setPixmap(IconProvider::fromTheme("text-plain").pixmap(16, 16));
|
||||
}
|
||||
}
|
||||
|
||||
void TabbedWebView::linkHovered(const QString &link, const QString &title, const QString &content)
|
||||
{
|
||||
Q_UNUSED(title)
|
||||
Q_UNUSED(content)
|
||||
|
||||
if (isCurrent()) {
|
||||
if (link != "") {
|
||||
p_QupZilla->statusBarMessage()->showMessage(link);
|
||||
}
|
||||
else {
|
||||
p_QupZilla->statusBarMessage()->clearMessage();
|
||||
}
|
||||
}
|
||||
m_hoveredLink = link;
|
||||
}
|
||||
|
||||
// FIXME: Don't do this magic to get index of tab.
|
||||
// Implement setTabIndex() and call it from TabWidget (when creating and also from
|
||||
// tabMoved slot)
|
||||
int TabbedWebView::tabIndex() const
|
||||
{
|
||||
int i = 0;
|
||||
while (WebTab* wTab = qobject_cast<WebTab*>(m_tabWidget->widget(i))) {
|
||||
if (wTab && wTab->view() == this) {
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
QWidget* TabbedWebView::overlayForJsAlert()
|
||||
{
|
||||
return m_webTab;
|
||||
}
|
||||
|
||||
void TabbedWebView::closeView()
|
||||
{
|
||||
emit wantsCloseTab(tabIndex());
|
||||
}
|
||||
|
||||
void TabbedWebView::checkRss()
|
||||
{
|
||||
if (m_rssChecked) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_rssChecked = true;
|
||||
QWebFrame* frame = page()->mainFrame();
|
||||
QWebElementCollection links = frame->findAllElements("link[type=\"application/rss+xml\"]");
|
||||
|
||||
m_hasRss = links.count() != 0;
|
||||
emit rssChanged(m_hasRss);
|
||||
}
|
||||
|
||||
void TabbedWebView::contextMenuEvent(QContextMenuEvent* event)
|
||||
{
|
||||
m_menu->clear();
|
||||
m_clickedFrame = 0;
|
||||
|
||||
QWebFrame* frameAtPos = page()->frameAt(event->pos());
|
||||
QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos());
|
||||
|
||||
if (!r.linkUrl().isEmpty() && r.linkUrl().scheme() != "javascript") {
|
||||
if (page()->selectedText() == r.linkText()) {
|
||||
findText("");
|
||||
}
|
||||
m_menu->addAction(QIcon(":/icons/menu/popup.png"), tr("Open link in new &tab"), this, SLOT(openUrlInNewTab()))->setData(r.linkUrl());
|
||||
m_menu->addAction(tr("Open link in new &window"), this, SLOT(openUrlInNewWindow()))->setData(r.linkUrl());
|
||||
m_menu->addSeparator();
|
||||
m_menu->addAction(IconProvider::fromTheme("user-bookmarks"), tr("B&ookmark link"), this, SLOT(bookmarkLink()))->setData(r.linkUrl());
|
||||
m_menu->addAction(QIcon::fromTheme("document-save"), tr("&Save link as..."), this, SLOT(downloadLinkToDisk()))->setData(r.linkUrl());
|
||||
m_menu->addAction(QIcon::fromTheme("mail-message-new"), tr("Send link..."), this, SLOT(sendLinkByMail()))->setData(r.linkUrl());
|
||||
m_menu->addAction(QIcon::fromTheme("edit-copy"), tr("&Copy link address"), this, SLOT(copyLinkToClipboard()))->setData(r.linkUrl());
|
||||
m_menu->addSeparator();
|
||||
if (!selectedText().isEmpty()) {
|
||||
m_menu->addAction(pageAction(QWebPage::Copy));
|
||||
}
|
||||
}
|
||||
|
||||
if (!r.imageUrl().isEmpty()) {
|
||||
if (!m_menu->isEmpty()) {
|
||||
m_menu->addSeparator();
|
||||
}
|
||||
m_menu->addAction(tr("Show i&mage"), this, SLOT(openActionUrl()))->setData(r.imageUrl());
|
||||
m_menu->addAction(tr("Copy im&age"), this, SLOT(copyImageToClipboard()))->setData(r.imageUrl());
|
||||
m_menu->addAction(QIcon::fromTheme("edit-copy"), tr("Copy image ad&dress"), this, SLOT(copyLinkToClipboard()))->setData(r.imageUrl());
|
||||
m_menu->addSeparator();
|
||||
m_menu->addAction(QIcon::fromTheme("document-save"), tr("&Save image as..."), this, SLOT(downloadLinkToDisk()))->setData(r.imageUrl());
|
||||
m_menu->addAction(QIcon::fromTheme("mail-message-new"), tr("Send image..."), this, SLOT(sendLinkByMail()))->setData(r.imageUrl());
|
||||
m_menu->addSeparator();
|
||||
//menu->addAction(tr("Block image"), this, SLOT(blockImage()))->setData(r.imageUrl().toString());
|
||||
if (!selectedText().isEmpty()) {
|
||||
m_menu->addAction(pageAction(QWebPage::Copy));
|
||||
}
|
||||
}
|
||||
|
||||
QWebElement element = r.element();
|
||||
if (!element.isNull() && (element.tagName().toLower() == "input" || element.tagName().toLower() == "textarea" ||
|
||||
element.tagName().toLower() == "video" || element.tagName().toLower() == "audio")) {
|
||||
if (m_menu->isEmpty()) {
|
||||
page()->createStandardContextMenu()->popup(QCursor::pos());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_menu->isEmpty() && selectedText().isEmpty()) {
|
||||
QAction* action = m_menu->addAction(tr("&Back"), this, SLOT(back()));
|
||||
action->setIcon(IconProvider::standardIcon(QStyle::SP_ArrowBack));
|
||||
action->setEnabled(history()->canGoBack());
|
||||
|
||||
action = m_menu->addAction(tr("&Forward"), this, SLOT(forward()));
|
||||
action->setIcon(IconProvider::standardIcon(QStyle::SP_ArrowForward));
|
||||
action->setEnabled(history()->canGoForward());
|
||||
|
||||
m_menu->addAction(IconProvider::standardIcon(QStyle::SP_BrowserReload), tr("&Reload"), this, SLOT(reload()));
|
||||
action = m_menu->addAction(IconProvider::standardIcon(QStyle::SP_BrowserStop), tr("S&top"), this, SLOT(stop()));
|
||||
action->setEnabled(isLoading());
|
||||
m_menu->addSeparator();
|
||||
|
||||
if (frameAtPos && page()->mainFrame() != frameAtPos) {
|
||||
m_clickedFrame = frameAtPos;
|
||||
QMenu* menu = new QMenu(tr("This frame"));
|
||||
menu->addAction(tr("Show &only this frame"), this, SLOT(loadClickedFrame()));
|
||||
menu->addAction(QIcon(":/icons/menu/popup.png"), tr("Show this frame in new &tab"), this, SLOT(loadClickedFrameInNewTab()));
|
||||
menu->addSeparator();
|
||||
menu->addAction(IconProvider::standardIcon(QStyle::SP_BrowserReload), tr("&Reload"), this, SLOT(reloadClickedFrame()));
|
||||
menu->addAction(QIcon::fromTheme("document-print"), tr("Print frame"), this, SLOT(printClickedFrame()));
|
||||
menu->addSeparator();
|
||||
menu->addAction(QIcon::fromTheme("zoom-in"), tr("Zoom &in"), this, SLOT(clickedFrameZoomIn()));
|
||||
menu->addAction(QIcon::fromTheme("zoom-out"), tr("&Zoom out"), this, SLOT(clickedFrameZoomOut()));
|
||||
menu->addAction(QIcon::fromTheme("zoom-original"), tr("Reset"), this, SLOT(clickedFrameZoomReset()));
|
||||
menu->addSeparator();
|
||||
menu->addAction(QIcon::fromTheme("text-html"), tr("Show so&urce of frame"), this, SLOT(showClickedFrameSource()));
|
||||
|
||||
m_menu->addMenu(menu);
|
||||
}
|
||||
|
||||
m_menu->addSeparator();
|
||||
m_menu->addAction(IconProvider::fromTheme("user-bookmarks"), tr("Book&mark page"), this, SLOT(bookmarkLink()));
|
||||
m_menu->addAction(QIcon::fromTheme("document-save"), tr("&Save page as..."), this, SLOT(downloadLinkToDisk()))->setData(url());
|
||||
m_menu->addAction(QIcon::fromTheme("edit-copy"), tr("&Copy page link"), this, SLOT(copyLinkToClipboard()))->setData(url());
|
||||
m_menu->addAction(QIcon::fromTheme("mail-message-new"), tr("Send page link..."), this, SLOT(sendLinkByMail()))->setData(url());
|
||||
m_menu->addAction(QIcon::fromTheme("document-print"), tr("&Print page"), this, SLOT(printPage()));
|
||||
m_menu->addSeparator();
|
||||
m_menu->addAction(QIcon::fromTheme("edit-select-all"), tr("Select &all"), this, SLOT(selectAll()));
|
||||
m_menu->addSeparator();
|
||||
if (url().scheme() == "http" || url().scheme() == "https") {
|
||||
// bool result = validateConfirm(tr("Do you want to upload this page to an online source code validator?"));
|
||||
// if (result)
|
||||
m_menu->addAction(tr("Validate page"), this, SLOT(openUrlInNewTab()))->setData("http://validator.w3.org/check?uri=" + url().toString());
|
||||
}
|
||||
|
||||
m_menu->addAction(QIcon::fromTheme("text-html"), tr("Show so&urce code"), this, SLOT(showSource()));
|
||||
m_menu->addAction(tr("Show Web &Inspector"), this, SLOT(showInspector()));
|
||||
m_menu->addSeparator();
|
||||
m_menu->addAction(QIcon::fromTheme("dialog-information"), tr("Show info ab&out site"), this, SLOT(showSiteInfo()));
|
||||
}
|
||||
|
||||
mApp->plugins()->populateWebViewMenu(m_menu, this, r);
|
||||
|
||||
if (!selectedText().isEmpty()) {
|
||||
QString selectedText = page()->selectedText();
|
||||
|
||||
m_menu->addAction(pageAction(QWebPage::Copy));
|
||||
m_menu->addAction(QIcon::fromTheme("mail-message-new"), tr("Send text..."), this, SLOT(sendLinkByMail()))->setData(selectedText);
|
||||
m_menu->addSeparator();
|
||||
|
||||
QString langCode = mApp->getActiveLanguage().left(2);
|
||||
QUrl googleTranslateUrl = QUrl(QString("http://translate.google.com/#auto|%1|%2").arg(langCode, selectedText));
|
||||
m_menu->addAction(QIcon(":icons/menu/translate.png"), tr("Google Translate"), this, SLOT(openUrlInNewTab()))->setData(googleTranslateUrl);
|
||||
m_menu->addAction(tr("Dictionary"), this, SLOT(openUrlInNewTab()))->setData("http://" + (langCode != "" ? langCode + "." : langCode) + "wiktionary.org/wiki/Special:Search?search=" + selectedText);
|
||||
m_menu->addSeparator();
|
||||
|
||||
QString selectedString = selectedText.trimmed();
|
||||
if (!selectedString.contains(".")) {
|
||||
// Try to add .com
|
||||
selectedString.append(".com");
|
||||
}
|
||||
QUrl guessedUrl = QUrl::fromUserInput(selectedString);
|
||||
|
||||
if (isUrlValid(guessedUrl)) {
|
||||
m_menu->addAction(QIcon(":/icons/menu/popup.png"), tr("Go to &web address"), this, SLOT(openUrlInNewTab()))->setData(guessedUrl);
|
||||
}
|
||||
|
||||
selectedText.truncate(20);
|
||||
|
||||
SearchEngine engine = mApp->searchEnginesManager()->activeEngine();
|
||||
m_menu->addAction(engine.icon, tr("Search \"%1 ..\" with %2").arg(selectedText, engine.name), this, SLOT(searchSelectedText()));
|
||||
}
|
||||
|
||||
#if (QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 2, 0))
|
||||
// still bugged? in 4.8 RC (it shows selection of webkit's internal source, not html from page)
|
||||
// it may or may not be bug, but this implementation is useless for us
|
||||
//
|
||||
// if (!selectedHtml().isEmpty())
|
||||
// menu->addAction(tr("Show source of selection"), this, SLOT(showSourceOfSelection()));
|
||||
#endif
|
||||
|
||||
if (!m_menu->isEmpty()) {
|
||||
//Prevent choosing first option with double rightclick
|
||||
QPoint pos = QCursor::pos();
|
||||
QPoint p(pos.x(), pos.y() + 1);
|
||||
m_menu->popup(p);
|
||||
return;
|
||||
}
|
||||
|
||||
WebView::contextMenuEvent(event);
|
||||
}
|
||||
|
||||
void TabbedWebView::stop()
|
||||
{
|
||||
m_page->triggerAction(QWebPage::Stop);
|
||||
slotLoadFinished();
|
||||
}
|
||||
|
||||
void TabbedWebView::openUrlInNewTab()
|
||||
{
|
||||
if (QAction* action = qobject_cast<QAction*>(sender())) {
|
||||
m_tabWidget->addView(action->data().toUrl(), TabWidget::NewBackgroundTab);
|
||||
}
|
||||
}
|
||||
|
||||
void TabbedWebView::searchSelectedText()
|
||||
{
|
||||
SearchEngine engine = mApp->searchEnginesManager()->activeEngine();
|
||||
m_tabWidget->addView(engine.url.replace("%s", selectedText()), TabWidget::NewBackgroundTab);
|
||||
}
|
||||
|
||||
void TabbedWebView::bookmarkLink()
|
||||
{
|
||||
if (QAction* action = qobject_cast<QAction*>(sender())) {
|
||||
if (action->data().isNull()) {
|
||||
p_QupZilla->bookmarkPage();
|
||||
}
|
||||
else {
|
||||
p_QupZilla->addBookmark(action->data().toUrl(), title(), icon());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TabbedWebView::showSourceOfSelection()
|
||||
{
|
||||
#if (QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 2, 0))
|
||||
showSource(m_page->mainFrame(), selectedHtml());
|
||||
#endif
|
||||
}
|
||||
|
||||
void TabbedWebView::showInspector()
|
||||
{
|
||||
p_QupZilla->showWebInspector();
|
||||
}
|
||||
|
||||
void TabbedWebView::getFocus(const QUrl &urla)
|
||||
{
|
||||
if (urla == url()) {
|
||||
m_tabWidget->setCurrentWidget(m_webTab);
|
||||
}
|
||||
}
|
||||
|
||||
// ClickedFrame slots
|
||||
|
||||
void TabbedWebView::loadClickedFrame()
|
||||
{
|
||||
QUrl frameUrl = m_clickedFrame->url();
|
||||
if (frameUrl.isEmpty()) {
|
||||
frameUrl = m_clickedFrame->requestedUrl();
|
||||
}
|
||||
|
||||
load(frameUrl);
|
||||
}
|
||||
|
||||
void TabbedWebView::loadClickedFrameInNewTab()
|
||||
{
|
||||
QUrl frameUrl = m_clickedFrame->url();
|
||||
if (frameUrl.isEmpty()) {
|
||||
frameUrl = m_clickedFrame->requestedUrl();
|
||||
}
|
||||
|
||||
m_tabWidget->addView(frameUrl);
|
||||
}
|
||||
|
||||
void TabbedWebView::reloadClickedFrame()
|
||||
{
|
||||
QUrl frameUrl = m_clickedFrame->url();
|
||||
if (frameUrl.isEmpty()) {
|
||||
frameUrl = m_clickedFrame->requestedUrl();
|
||||
}
|
||||
|
||||
m_clickedFrame->load(frameUrl);
|
||||
}
|
||||
|
||||
void TabbedWebView::printClickedFrame()
|
||||
{
|
||||
printPage(m_clickedFrame);
|
||||
}
|
||||
|
||||
void TabbedWebView::clickedFrameZoomIn()
|
||||
{
|
||||
qreal zFactor = m_clickedFrame->zoomFactor() + 0.1;
|
||||
if (zFactor > 2.5) {
|
||||
zFactor = 2.5;
|
||||
}
|
||||
|
||||
m_clickedFrame->setZoomFactor(zFactor);
|
||||
}
|
||||
|
||||
void TabbedWebView::clickedFrameZoomOut()
|
||||
{
|
||||
qreal zFactor = m_clickedFrame->zoomFactor() - 0.1;
|
||||
if (zFactor < 0.5) {
|
||||
zFactor = 0.5;
|
||||
}
|
||||
|
||||
m_clickedFrame->setZoomFactor(zFactor);
|
||||
}
|
||||
|
||||
void TabbedWebView::clickedFrameZoomReset()
|
||||
{
|
||||
m_clickedFrame->setZoomFactor(zoomFactor());
|
||||
}
|
||||
|
||||
void TabbedWebView::showClickedFrameSource()
|
||||
{
|
||||
showSource(m_clickedFrame);
|
||||
}
|
||||
|
||||
void TabbedWebView::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
switch (event->button()) {
|
||||
case Qt::MiddleButton:
|
||||
if (isUrlValid(QUrl(m_hoveredLink))) {
|
||||
m_tabWidget->addView(QUrl::fromEncoded(m_hoveredLink.toUtf8()), TabWidget::NewBackgroundTab);
|
||||
event->accept();
|
||||
return;
|
||||
}
|
||||
#ifdef Q_WS_WIN
|
||||
else {
|
||||
WebView::mouseDoubleClickEvent(event);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case Qt::LeftButton:
|
||||
if (event->modifiers() == Qt::ControlModifier && isUrlValid(QUrl(m_hoveredLink))) {
|
||||
m_tabWidget->addView(QUrl::fromEncoded(m_hoveredLink.toUtf8()), TabWidget::NewBackgroundTab);
|
||||
event->accept();
|
||||
return;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
WebView::mousePressEvent(event);
|
||||
}
|
||||
|
||||
void TabbedWebView::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
if (m_mouseTrack) {
|
||||
if (m_navigationVisible) {
|
||||
m_navigationVisible = false;
|
||||
p_QupZilla->showNavigationWithFullscreen();
|
||||
}
|
||||
else if (event->y() < 5) {
|
||||
m_navigationVisible = true;
|
||||
p_QupZilla->showNavigationWithFullscreen();
|
||||
}
|
||||
}
|
||||
WebView::mouseMoveEvent(event);
|
||||
}
|
||||
|
||||
void TabbedWebView::disconnectObjects()
|
||||
{
|
||||
disconnect(this);
|
||||
disconnect(p_QupZilla->statusBar());
|
||||
}
|
||||
|
||||
TabbedWebView::~TabbedWebView()
|
||||
{
|
||||
}
|
124
src/webview/tabbedwebview.h
Normal file
124
src/webview/tabbedwebview.h
Normal file
@ -0,0 +1,124 @@
|
||||
/* ============================================================
|
||||
* QupZilla - WebKit based browser
|
||||
* Copyright (C) 2010-2012 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 TABBEDWEBVIEW_H
|
||||
#define TABBEDWEBVIEW_H
|
||||
|
||||
#include <QDebug>
|
||||
#include <QTabWidget>
|
||||
#include <QContextMenuEvent>
|
||||
#include <QLabel>
|
||||
#include <QHostInfo>
|
||||
|
||||
#include "webview.h"
|
||||
|
||||
class QupZilla;
|
||||
class TabWidget;
|
||||
class WebPage;
|
||||
class WebTab;
|
||||
class TabbedWebView : public WebView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TabbedWebView(QupZilla* mainClass, WebTab* webTab);
|
||||
~TabbedWebView();
|
||||
|
||||
void setWebPage(WebPage* page);
|
||||
|
||||
WebPage* webPage() const;
|
||||
WebTab* webTab() const;
|
||||
|
||||
QString getIp() const;
|
||||
QLabel* animationLoading(int index, bool addMovie);
|
||||
|
||||
int tabIndex() const;
|
||||
bool hasRss() { return m_hasRss; }
|
||||
|
||||
QWidget* overlayForJsAlert();
|
||||
|
||||
void disconnectObjects();
|
||||
|
||||
signals:
|
||||
void wantsCloseTab(int);
|
||||
void ipChanged(QString);
|
||||
void rssChanged(bool);
|
||||
void changed();
|
||||
|
||||
public slots:
|
||||
void titleChanged();
|
||||
|
||||
void stop();
|
||||
void showIcon();
|
||||
|
||||
void slotLoadStarted();
|
||||
void loadingProgress(int prog);
|
||||
|
||||
void closeView();
|
||||
|
||||
private slots:
|
||||
void trackMouse(bool state) { m_mouseTrack = state; }
|
||||
void searchSelectedText();
|
||||
void slotLoadFinished();
|
||||
void urlChanged(const QUrl &url);
|
||||
void linkHovered(const QString &link, const QString &title, const QString &content);
|
||||
void openUrlInNewTab();
|
||||
void bookmarkLink();
|
||||
void showSourceOfSelection();
|
||||
void getFocus(const QUrl &urla);
|
||||
void showInspector();
|
||||
void stopAnimation();
|
||||
void setIp(const QHostInfo &info);
|
||||
void checkRss();
|
||||
void slotIconChanged();
|
||||
|
||||
// ClickedFrame
|
||||
void loadClickedFrame();
|
||||
void loadClickedFrameInNewTab();
|
||||
void reloadClickedFrame();
|
||||
void printClickedFrame();
|
||||
void clickedFrameZoomIn();
|
||||
void clickedFrameZoomOut();
|
||||
void clickedFrameZoomReset();
|
||||
void showClickedFrameSource();
|
||||
|
||||
private:
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
void contextMenuEvent(QContextMenuEvent* event);
|
||||
void mouseMoveEvent(QMouseEvent* event);
|
||||
|
||||
bool isCurrent();
|
||||
|
||||
QupZilla* p_QupZilla;
|
||||
TabWidget* m_tabWidget;
|
||||
|
||||
QString m_hoveredLink;
|
||||
QString m_currentIp;
|
||||
|
||||
WebPage* m_page;
|
||||
WebTab* m_webTab;
|
||||
QMenu* m_menu;
|
||||
QWebFrame* m_clickedFrame;
|
||||
|
||||
bool m_mouseTrack;
|
||||
bool m_navigationVisible;
|
||||
|
||||
bool m_hasRss;
|
||||
bool m_rssChecked;
|
||||
|
||||
};
|
||||
|
||||
#endif // TABBEDWEBVIEW_H
|
@ -15,7 +15,7 @@
|
||||
* 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 "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "webpage.h"
|
||||
#include "qupzilla.h"
|
||||
#include "tabwidget.h"
|
||||
@ -197,12 +197,12 @@ void TabWidget::moveAddTabButton(int posX)
|
||||
void TabWidget::aboutToShowTabsMenu()
|
||||
{
|
||||
m_menuTabs->clear();
|
||||
WebView* actView = weView();
|
||||
TabbedWebView* actView = weView();
|
||||
if (!actView) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < count(); i++) {
|
||||
WebView* view = weView(i);
|
||||
TabbedWebView* view = weView(i);
|
||||
if (!view) {
|
||||
continue;
|
||||
}
|
||||
@ -211,7 +211,7 @@ void TabWidget::aboutToShowTabsMenu()
|
||||
action->setIcon(QIcon(":/icons/menu/dot.png"));
|
||||
}
|
||||
else {
|
||||
action->setIcon(view->siteIcon());
|
||||
action->setIcon(view->icon());
|
||||
}
|
||||
if (view->title().isEmpty()) {
|
||||
if (view->isLoading()) {
|
||||
@ -276,7 +276,7 @@ int TabWidget::addView(QUrl url, const QString &title, OpenUrlIn openIn, bool se
|
||||
index = insertTab(position, new WebTab(p_QupZilla, locBar), "");
|
||||
}
|
||||
|
||||
WebView* webView = weView(index);
|
||||
TabbedWebView* webView = weView(index);
|
||||
locBar->setWebView(webView);
|
||||
|
||||
setTabText(index, title);
|
||||
@ -334,25 +334,26 @@ void TabWidget::closeTab(int index)
|
||||
index = currentIndex();
|
||||
}
|
||||
|
||||
if (count() == 1) {
|
||||
if (m_dontQuitWithOneTab) {
|
||||
weView(index)->load(m_urlOnNewTab);
|
||||
weView(index)->page()->history()->clear();
|
||||
return;
|
||||
}
|
||||
else {
|
||||
p_QupZilla->close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
WebView* webView = weView(index);
|
||||
TabbedWebView* webView = weView(index);
|
||||
WebPage* webPage = webView->webPage();
|
||||
WebTab* webTab = webView->webTab();
|
||||
|
||||
if (!webView || !webPage || !webTab) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (count() == 1) {
|
||||
if (m_dontQuitWithOneTab) {
|
||||
webView->load(m_urlOnNewTab);
|
||||
webPage->history()->clear();
|
||||
return;
|
||||
}
|
||||
else {
|
||||
p_QupZilla->close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (webTab->isPinned()) {
|
||||
emit pinnedTabClosed();
|
||||
}
|
||||
@ -403,7 +404,7 @@ void TabWidget::currentTabChanged(int index)
|
||||
}
|
||||
|
||||
m_isClosingToLastTabIndex = false;
|
||||
WebView* webView = weView();
|
||||
TabbedWebView* webView = weView();
|
||||
LocationBar* locBar = webView->webTab()->locationBar();
|
||||
|
||||
if (m_locationBars->indexOf(locBar) != -1) {
|
||||
@ -518,7 +519,7 @@ void TabWidget::savePinnedTabs()
|
||||
QStringList tabs;
|
||||
QList<QByteArray> tabsHistory;
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
if (WebView* tab = weView(i)) {
|
||||
if (TabbedWebView* tab = weView(i)) {
|
||||
WebTab* webTab = qobject_cast<WebTab*>(widget(i));
|
||||
if (!webTab || !webTab->isPinned()) {
|
||||
continue;
|
||||
@ -598,7 +599,7 @@ QByteArray TabWidget::saveState()
|
||||
QStringList tabs;
|
||||
QList<QByteArray> tabsHistory;
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
if (WebView* tab = weView(i)) {
|
||||
if (TabbedWebView* tab = weView(i)) {
|
||||
WebTab* webTab = qobject_cast<WebTab*>(widget(i));
|
||||
if (webTab && webTab->isPinned()) {
|
||||
continue;
|
||||
|
@ -26,11 +26,11 @@
|
||||
#include <QStackedWidget>
|
||||
#include <QTextDocument>
|
||||
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "webtab.h"
|
||||
|
||||
class QupZilla;
|
||||
class WebView;
|
||||
class TabbedWebView;
|
||||
class TabBar;
|
||||
class WebTab;
|
||||
class TabListButton;
|
||||
@ -98,8 +98,8 @@ private slots:
|
||||
|
||||
private:
|
||||
void resizeEvent(QResizeEvent* e);
|
||||
inline WebView* weView() { WebTab* webTab = qobject_cast<WebTab*>(widget(currentIndex())); if (!webTab) return 0; return webTab->view(); }
|
||||
inline WebView* weView(int index) { WebTab* webTab = qobject_cast<WebTab*>(widget(index)); if (!webTab) return 0; return webTab->view(); }
|
||||
inline TabbedWebView* weView() { WebTab* webTab = qobject_cast<WebTab*>(widget(currentIndex())); if (!webTab) return 0; return webTab->view(); }
|
||||
inline TabbedWebView* weView(int index) { WebTab* webTab = qobject_cast<WebTab*>(widget(index)); if (!webTab) return 0; return webTab->view(); }
|
||||
|
||||
bool m_hideTabBarWithOneTab;
|
||||
bool m_dontQuitWithOneTab;
|
||||
|
@ -17,8 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "webhistorywrapper.h"
|
||||
|
||||
WebHistoryWrapper::WebHistoryWrapper(QObject* parent)
|
||||
: QObject(parent)
|
||||
WebHistoryWrapper::WebHistoryWrapper()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -21,11 +21,10 @@
|
||||
#include <QObject>
|
||||
#include <QWebHistory>
|
||||
|
||||
class WebHistoryWrapper : public QObject
|
||||
class WebHistoryWrapper
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit WebHistoryWrapper(QObject* parent = 0);
|
||||
explicit WebHistoryWrapper();
|
||||
|
||||
static QList<QWebHistoryItem> forwardItems(int maxItems, QWebHistory* history);
|
||||
static QList<QWebHistoryItem> backItems(int maxItems, QWebHistory* history);
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "webinspectordockwidget.h"
|
||||
#include "docktitlebarwidget.h"
|
||||
#include "webpage.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "webtab.h"
|
||||
#include "qupzilla.h"
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
* ============================================================ */
|
||||
#include "webtab.h"
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "webpage.h"
|
||||
#include "tabbar.h"
|
||||
#include "locationbar.h"
|
||||
@ -33,26 +33,27 @@ WebTab::WebTab(QupZilla* mainClass, LocationBar* locationBar)
|
||||
m_layout->setContentsMargins(0, 0, 0, 0);
|
||||
m_layout->setSpacing(0);
|
||||
|
||||
m_view = new WebView(p_QupZilla, this);
|
||||
m_view.data()->setLocationBar(locationBar);
|
||||
m_layout->addWidget(m_view.data());
|
||||
m_view = new TabbedWebView(p_QupZilla, this);
|
||||
WebPage* page = new WebPage(p_QupZilla);
|
||||
m_view->setWebPage(page);
|
||||
m_layout->addWidget(m_view);
|
||||
|
||||
setLayout(m_layout);
|
||||
setAutoFillBackground(true); // We don't want this transparent
|
||||
|
||||
connect(m_view.data(), SIGNAL(showNotification(QWidget*)), this, SLOT(showNotification(QWidget*)));
|
||||
connect(m_view.data(), SIGNAL(iconChanged()), m_locationBar.data(), SLOT(siteIconChanged()));
|
||||
connect(m_view.data(), SIGNAL(loadStarted()), m_locationBar.data(), SLOT(clearIcon()));
|
||||
connect(m_view.data(), SIGNAL(loadFinished(bool)), m_locationBar.data(), SLOT(siteIconChanged()));
|
||||
connect(m_view.data(), SIGNAL(showUrl(QUrl)), m_locationBar.data(), SLOT(showUrl(QUrl)));
|
||||
connect(m_view.data(), SIGNAL(rssChanged(bool)), m_locationBar.data(), SLOT(showRSSIcon(bool)));
|
||||
connect(m_view.data()->webPage(), SIGNAL(privacyChanged(bool)), m_locationBar.data(), SLOT(setPrivacy(bool)));
|
||||
connect(m_locationBar.data(), SIGNAL(loadUrl(QUrl)), m_view.data(), SLOT(load(QUrl)));
|
||||
connect(m_view, SIGNAL(showNotification(QWidget*)), this, SLOT(showNotification(QWidget*)));
|
||||
connect(m_view, SIGNAL(iconChanged()), m_locationBar.data(), SLOT(siteIconChanged()));
|
||||
connect(m_view, SIGNAL(loadStarted()), m_locationBar.data(), SLOT(clearIcon()));
|
||||
connect(m_view, SIGNAL(loadFinished(bool)), m_locationBar.data(), SLOT(siteIconChanged()));
|
||||
connect(m_view, SIGNAL(urlChanged(QUrl)), m_locationBar.data(), SLOT(showUrl(QUrl)));
|
||||
connect(m_view, SIGNAL(rssChanged(bool)), m_locationBar.data(), SLOT(showRSSIcon(bool)));
|
||||
connect(m_view->webPage(), SIGNAL(privacyChanged(bool)), m_locationBar.data(), SLOT(setPrivacy(bool)));
|
||||
connect(m_locationBar.data(), SIGNAL(loadUrl(QUrl)), m_view, SLOT(load(QUrl)));
|
||||
}
|
||||
|
||||
WebView* WebTab::view()
|
||||
TabbedWebView* WebTab::view()
|
||||
{
|
||||
return m_view.data();
|
||||
return m_view;
|
||||
}
|
||||
|
||||
bool WebTab::isPinned()
|
||||
@ -97,7 +98,7 @@ void WebTab::showNotification(QWidget* notif)
|
||||
|
||||
int WebTab::tabIndex()
|
||||
{
|
||||
return m_view.data()->tabIndex();
|
||||
return m_view->tabIndex();
|
||||
}
|
||||
|
||||
void WebTab::pinTab(int index)
|
||||
@ -109,7 +110,7 @@ void WebTab::pinTab(int index)
|
||||
|
||||
if (m_pinned) { //Unpin tab
|
||||
m_pinned = false;
|
||||
tabWidget->setTabText(index, m_view.data()->title());
|
||||
tabWidget->setTabText(index, m_view->title());
|
||||
tabWidget->getTabBar()->updateCloseButton(index);
|
||||
}
|
||||
else { // Pin tab
|
||||
@ -126,14 +127,12 @@ void WebTab::disconnectObjects()
|
||||
{
|
||||
disconnect(this);
|
||||
disconnect(m_locationBar.data());
|
||||
disconnect(m_view.data());
|
||||
disconnect(m_view);
|
||||
}
|
||||
|
||||
WebTab::~WebTab()
|
||||
{
|
||||
if (m_locationBar.data()) {
|
||||
if (m_locationBar) {
|
||||
delete m_locationBar.data();
|
||||
}
|
||||
|
||||
m_view.data()->deleteLater();
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include <QWidget>
|
||||
#include <QLayout>
|
||||
#include <QWeakPointer>
|
||||
#include "webview.h"
|
||||
#include "tabbedwebview.h"
|
||||
#include "locationbar.h"
|
||||
|
||||
class QupZilla;
|
||||
@ -32,7 +32,7 @@ class WebTab : public QWidget
|
||||
public:
|
||||
explicit WebTab(QupZilla* mainClass, LocationBar* locationBar);
|
||||
~WebTab();
|
||||
WebView* view();
|
||||
TabbedWebView* view();
|
||||
bool isPinned();
|
||||
void pinTab(int index);
|
||||
void setPinned(bool state);
|
||||
@ -52,7 +52,7 @@ private:
|
||||
int tabIndex();
|
||||
|
||||
QupZilla* p_QupZilla;
|
||||
QWeakPointer<WebView> m_view;
|
||||
TabbedWebView* m_view;
|
||||
QVBoxLayout* m_layout;
|
||||
QWeakPointer<LocationBar> m_locationBar;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user