summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergio Ahumada <sahumada@blackberry.com>2014-06-14 21:52:15 +0200
committerSergio Ahumada <sahumada@blackberry.com>2014-06-14 21:52:15 +0200
commit0fd4ec1f79ce808f51a6d435c20739c8c40abd77 (patch)
tree2051cbdb74c9f434b70185da721ed447c37a3fb9
parentc8e7417c3a8366ac423efef73b6d97cea70ada61 (diff)
parentbce5056b9e16a943357e362455a46685d3f22093 (diff)
downloadqtwebkit-examples-0fd4ec1f79ce808f51a6d435c20739c8c40abd77.tar.gz
Merge remote-tracking branch 'origin/5.3' into dev
Conflicts: .qmake.conf Change-Id: If9c3bf3632b0203818aefd12a973f08d60908c91
-rw-r--r--examples/webkitwidgets/browser/browserapplication.cpp76
-rw-r--r--examples/webkitwidgets/browser/browserapplication.h12
-rw-r--r--examples/webkitwidgets/browser/browsermainwindow.cpp10
-rw-r--r--examples/webkitwidgets/browser/data/defaultbookmarks.xbel6
-rw-r--r--examples/webkitwidgets/browser/main.cpp2
-rw-r--r--examples/webkitwidgets/fancybrowser/main.cpp42
6 files changed, 108 insertions, 40 deletions
diff --git a/examples/webkitwidgets/browser/browserapplication.cpp b/examples/webkitwidgets/browser/browserapplication.cpp
index 0e281de..0ea0027 100644
--- a/examples/webkitwidgets/browser/browserapplication.cpp
+++ b/examples/webkitwidgets/browser/browserapplication.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -51,6 +51,7 @@
#include "webview.h"
#include <QtCore/QBuffer>
+#include <QtCore/QCommandLineParser>
#include <QtCore/QDir>
#include <QtCore/QLibraryInfo>
#include <QtCore/QSettings>
@@ -75,36 +76,65 @@ HistoryManager *BrowserApplication::s_historyManager = 0;
NetworkAccessManager *BrowserApplication::s_networkAccessManager = 0;
BookmarksManager *BrowserApplication::s_bookmarksManager = 0;
+static void showHelp(QCommandLineParser &parser, const QString errorMessage = QString())
+{
+ QString text;
+ QTextStream str(&text);
+ str << "<html><head/><body>";
+ if (!errorMessage.isEmpty())
+ str << errorMessage;
+ str << "<pre>" << parser.helpText() << "</pre></body></html>";
+ QMessageBox box(errorMessage.isEmpty() ? QMessageBox::Information : QMessageBox::Warning,
+ QGuiApplication::applicationDisplayName(), text, QMessageBox::Ok);
+ box.setTextInteractionFlags(Qt::TextBrowserInteraction);
+ box.exec();
+}
+
BrowserApplication::BrowserApplication(int &argc, char **argv)
: QApplication(argc, argv)
, m_localServer(0)
+ , m_initialUrl(QString())
+ , m_correctlyInitialized(false)
{
QCoreApplication::setOrganizationName(QLatin1String("Qt"));
QCoreApplication::setApplicationName(QLatin1String("demobrowser"));
QCoreApplication::setApplicationVersion(QLatin1String("0.1"));
-#ifdef Q_WS_QWS
- // Use a different server name for QWS so we can run an X11
- // browser and a QWS browser in parallel on the same machine for
- // debugging
- QString serverName = QCoreApplication::applicationName() + QLatin1String("_qws");
-#else
+
+ QCommandLineParser commandLineParser;
+ commandLineParser.addPositionalArgument(QStringLiteral("url"),
+ QStringLiteral("The url to be loaded in the browser window."));
+
+ if (!commandLineParser.parse(QCoreApplication::arguments())) {
+ showHelp(commandLineParser, QStringLiteral("<p>Invalid argument</p>"));
+ return;
+ }
+
+ QStringList args = commandLineParser.positionalArguments();
+ if (args.count() > 1) {
+ showHelp(commandLineParser, QStringLiteral("<p>Too many arguments.</p>"));
+ return;
+ } else if (args.count() == 1) {
+ m_initialUrl = args.at(0);
+ }
+ if (!m_initialUrl.isEmpty() && !QUrl::fromUserInput(m_initialUrl).isValid()) {
+ showHelp(commandLineParser, QString("<p>%1 is not a valid url</p>").arg(m_initialUrl));
+ return;
+ }
+
+ m_correctlyInitialized = true;
+
QString serverName = QCoreApplication::applicationName();
-#endif
QLocalSocket socket;
socket.connectToServer(serverName);
if (socket.waitForConnected(500)) {
QTextStream stream(&socket);
- QStringList args = QCoreApplication::arguments();
- if (args.count() > 1)
- stream << args.last();
- else
- stream << QString();
+ stream << m_initialUrl;
stream.flush();
socket.waitForBytesWritten();
return;
}
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
QApplication::setQuitOnLastWindowClosed(false);
#else
QApplication::setQuitOnLastWindowClosed(true);
@@ -138,7 +168,7 @@ BrowserApplication::BrowserApplication(int &argc, char **argv)
m_lastSession = settings.value(QLatin1String("lastSession")).toByteArray();
settings.endGroup();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
connect(this, SIGNAL(lastWindowClosed()),
this, SLOT(lastWindowClosed()));
#endif
@@ -157,7 +187,7 @@ BrowserApplication::~BrowserApplication()
delete s_bookmarksManager;
}
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
void BrowserApplication::lastWindowClosed()
{
clean();
@@ -172,7 +202,7 @@ BrowserApplication *BrowserApplication::instance()
return (static_cast<BrowserApplication *>(QCoreApplication::instance()));
}
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
#include <QtWidgets/QMessageBox>
void BrowserApplication::quitBrowser()
{
@@ -213,9 +243,8 @@ void BrowserApplication::postLaunch()
// newMainWindow() needs to be called in main() for this to happen
if (m_mainWindows.count() > 0) {
- QStringList args = QCoreApplication::arguments();
- if (args.count() > 1)
- mainWindow()->loadPage(args.last());
+ if (!m_initialUrl.isEmpty())
+ mainWindow()->loadPage(m_initialUrl);
else
mainWindow()->slotHome();
}
@@ -329,6 +358,11 @@ bool BrowserApplication::isTheOnlyBrowser() const
return (m_localServer != 0);
}
+bool BrowserApplication::isCorrectlyInitialized() const
+{
+ return m_correctlyInitialized;
+}
+
void BrowserApplication::installTranslator(const QString &name)
{
QTranslator *translator = new QTranslator(this);
@@ -336,7 +370,7 @@ void BrowserApplication::installTranslator(const QString &name)
QApplication::installTranslator(translator);
}
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
bool BrowserApplication::event(QEvent* event)
{
switch (event->type()) {
diff --git a/examples/webkitwidgets/browser/browserapplication.h b/examples/webkitwidgets/browser/browserapplication.h
index d4b89aa..7aac840 100644
--- a/examples/webkitwidgets/browser/browserapplication.h
+++ b/examples/webkitwidgets/browser/browserapplication.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -44,8 +44,8 @@
#include <QtWidgets/QApplication>
-#include <QtCore/QUrl>
#include <QtCore/QPointer>
+#include <QtCore/QUrl>
#include <QtGui/QIcon>
@@ -70,6 +70,7 @@ public:
void loadSettings();
bool isTheOnlyBrowser() const;
+ bool isCorrectlyInitialized() const;
BrowserMainWindow *mainWindow();
QList<BrowserMainWindow*> mainWindows();
QIcon icon(const QUrl &url) const;
@@ -83,14 +84,14 @@ public:
static NetworkAccessManager *networkAccessManager();
static BookmarksManager *bookmarksManager();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
bool event(QEvent *event);
#endif
public slots:
BrowserMainWindow *newMainWindow();
void restoreLastSession();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
void lastWindowClosed();
void quitBrowser();
#endif
@@ -112,6 +113,9 @@ private:
QList<QPointer<BrowserMainWindow> > m_mainWindows;
QLocalServer *m_localServer;
QByteArray m_lastSession;
+ QString m_initialUrl;
+ bool m_correctlyInitialized;
+
mutable QIcon m_defaultIcon;
};
diff --git a/examples/webkitwidgets/browser/browsermainwindow.cpp b/examples/webkitwidgets/browser/browsermainwindow.cpp
index b94cb25..de988ed 100644
--- a/examples/webkitwidgets/browser/browsermainwindow.cpp
+++ b/examples/webkitwidgets/browser/browsermainwindow.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -98,7 +98,7 @@ BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags)
QVBoxLayout *layout = new QVBoxLayout;
layout->setSpacing(0);
layout->setMargin(0);
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
layout->addWidget(m_bookmarksToolbar);
layout->addWidget(new QWidget); // <- OS X tab widget style bug
#else
@@ -133,7 +133,7 @@ BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags)
m_navigationBar, SLOT(setVisible(bool)));
connect(m_tabWidget, SIGNAL(toolBarVisibilityChangeRequested(bool)),
m_bookmarksToolbar, SLOT(setVisible(bool)));
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
connect(m_tabWidget, SIGNAL(lastTabClosed()),
this, SLOT(close()));
#else
@@ -278,7 +278,7 @@ void BrowserMainWindow::setupMenu()
action->setCheckable(true);
fileMenu->addSeparator();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
fileMenu->addAction(tr("&Quit"), BrowserApplication::instance(), SLOT(quitBrowser()), QKeySequence(Qt::CTRL | Qt::Key_Q));
#else
fileMenu->addAction(tr("&Quit"), this, SLOT(close()), QKeySequence(Qt::CTRL | Qt::Key_Q));
@@ -591,7 +591,7 @@ void BrowserMainWindow::slotUpdateWindowTitle(const QString &title)
if (title.isEmpty()) {
setWindowTitle(tr("Qt Demo Browser"));
} else {
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_OSX)
setWindowTitle(title);
#else
setWindowTitle(tr("%1 - Qt Demo Browser", "Page title and Browser name").arg(title));
diff --git a/examples/webkitwidgets/browser/data/defaultbookmarks.xbel b/examples/webkitwidgets/browser/data/defaultbookmarks.xbel
index 7a95e36..a616c76 100644
--- a/examples/webkitwidgets/browser/data/defaultbookmarks.xbel
+++ b/examples/webkitwidgets/browser/data/defaultbookmarks.xbel
@@ -9,12 +9,12 @@
<bookmark href="http://webkit.org/">
<title>WebKit.org</title>
</bookmark>
+ <bookmark href="http://qt.digia.com">
+ <title>Digia Qt Home Page</title>
+ </bookmark>
<bookmark href="http://qt-project.org/doc/">
<title>Qt Documentation</title>
</bookmark>
- <bookmark href="http://qt-project.org/quarterly/">
- <title>Qt Quarterly</title>
- </bookmark>
<bookmark href="http://planet.qt-project.org/">
<title>Qt Blog</title>
</bookmark>
diff --git a/examples/webkitwidgets/browser/main.cpp b/examples/webkitwidgets/browser/main.cpp
index ae54456..fac3d01 100644
--- a/examples/webkitwidgets/browser/main.cpp
+++ b/examples/webkitwidgets/browser/main.cpp
@@ -45,7 +45,7 @@ int main(int argc, char **argv)
{
Q_INIT_RESOURCE(data);
BrowserApplication application(argc, argv);
- if (!application.isTheOnlyBrowser())
+ if (!application.isTheOnlyBrowser() || !application.isCorrectlyInitialized())
return 0;
application.newMainWindow();
return application.exec();
diff --git a/examples/webkitwidgets/fancybrowser/main.cpp b/examples/webkitwidgets/fancybrowser/main.cpp
index 451f247..bde31b0 100644
--- a/examples/webkitwidgets/fancybrowser/main.cpp
+++ b/examples/webkitwidgets/fancybrowser/main.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the examples of the Qt Toolkit.
@@ -41,15 +41,45 @@
#include <QtWidgets>
#include "mainwindow.h"
+static void showHelp(QCommandLineParser &parser, const QString errorMessage = QString())
+{
+ QString text;
+ QTextStream str(&text);
+ str << "<html><head/><body>";
+ if (!errorMessage.isEmpty())
+ str << "<p>" << errorMessage << "</p>";
+ str << "<pre>" << parser.helpText() << "</pre></body></html>";
+ QMessageBox box(errorMessage.isEmpty() ? QMessageBox::Information : QMessageBox::Warning,
+ QGuiApplication::applicationDisplayName(), text, QMessageBox::Ok);
+ box.setTextInteractionFlags(Qt::TextBrowserInteraction);
+ box.exec();
+}
+
int main(int argc, char * argv[])
{
QApplication app(argc, argv);
+
+ QCommandLineParser commandLineParser;
+ commandLineParser.addPositionalArgument(QStringLiteral("url"),
+ QStringLiteral("The url to be loaded in the browser window."));
+ commandLineParser.process(app);
+ QStringList positionalArguments = commandLineParser.positionalArguments();
+
QUrl url;
- if (argc > 1)
- url = QUrl::fromUserInput(argv[1]);
+ if (positionalArguments.size() > 1) {
+ showHelp(commandLineParser, QStringLiteral("Too many arguments."));
+ return -1;
+ } else if (positionalArguments.size() == 1)
+ url = QUrl::fromUserInput(positionalArguments.at(0));
else
- url = QUrl("http://www.google.com/ncr");
- MainWindow *browser = new MainWindow(url);
- browser->show();
+ url = QUrl("http://www.qt-project.org");
+
+ if (!url.isValid()) {
+ showHelp(commandLineParser, QString("%1 is not a valid url.").arg(positionalArguments.at(0)));
+ return -1;
+ }
+
+ MainWindow browser(url);
+ browser.show();
return app.exec();
}