summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/browserapplication.cpp179
-rw-r--r--src/browserapplication.h70
-rw-r--r--src/main.cpp11
3 files changed, 140 insertions, 120 deletions
diff --git a/src/browserapplication.cpp b/src/browserapplication.cpp
index f904ea1c..60e1d283 100644
--- a/src/browserapplication.cpp
+++ b/src/browserapplication.cpp
@@ -1,39 +1,22 @@
-/****************************************************************************
-**
-** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information
-** to ensure GNU General Public Licensing requirements will be met:
-** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
-** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
-** exception, Nokia gives you certain additional rights. These rights
-** are described in the Nokia Qt GPL Exception version 1.3, included in
-** the file GPL_EXCEPTION.txt in this package.
-**
-** Qt for Windows(R) Licensees
-** As a special exception, Nokia, as the sole copyright holder for Qt
-** Designer, grants users of the Qt/Eclipse Integration plug-in the
-** right for the Qt/Eclipse Integration to link to functionality
-** provided by Qt Designer and its related libraries.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-**
-****************************************************************************/
+/* ============================================================
+ *
+ * This file is a part of the reKonq project
+ *
+ * Copyright (C) 2008 by Andrea Diamantini <adjam7 at gmail dot com>
+ *
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, 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.
+ *
+ * ============================================================ */
+
#include "browserapplication.h"
@@ -46,51 +29,43 @@
#include "tabwidget.h"
#include "webview.h"
-#include <QtCore/QBuffer>
-#include <QtCore/QDir>
-#include <QtCore/QLibraryInfo>
-#include <QtCore/QSettings>
-#include <QtCore/QTextStream>
-#include <QtCore/QTranslator>
-
-#include <QtGui/QDesktopServices>
-#include <QtGui/QFileOpenEvent>
+#include <KCmdLineArgs>
+#include <KAboutData>
-#include <QtNetwork/QLocalServer>
-#include <QtNetwork/QLocalSocket>
-#include <QtNetwork/QNetworkProxy>
+#include <QBuffer>
+#include <QDir>
+#include <QLibraryInfo>
+#include <QSettings>
+#include <QTextStream>
+#include <QTranslator>
+#include <QDesktopServices>
+#include <QFileOpenEvent>
+#include <QLocalServer>
+#include <QLocalSocket>
+#include <QNetworkProxy>
+#include <QWebSettings>
+#include <QDebug>
-#include <QtWebKit/QWebSettings>
-#include <QtCore/QDebug>
DownloadManager *BrowserApplication::s_downloadManager = 0;
HistoryManager *BrowserApplication::s_historyManager = 0;
NetworkAccessManager *BrowserApplication::s_networkAccessManager = 0;
BookmarksManager *BrowserApplication::s_bookmarksManager = 0;
-BrowserApplication::BrowserApplication(int &argc, char **argv)
- : QApplication(argc, argv)
+
+
+BrowserApplication::BrowserApplication(KCmdLineArgs *args, const QString &serverName)
+ : KApplication()
, m_localServer(0)
{
- QCoreApplication::setOrganizationName(QLatin1String("Trolltech"));
- 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
- 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();
+ int n = args->count();
+ if (n > 1)
+ stream << args->arg(n-1);
else
stream << QString();
stream.flush();
@@ -99,9 +74,9 @@ BrowserApplication::BrowserApplication(int &argc, char **argv)
}
#if defined(Q_WS_MAC)
- QApplication::setQuitOnLastWindowClosed(false);
+ KApplication::setQuitOnLastWindowClosed(false);
#else
- QApplication::setQuitOnLastWindowClosed(true);
+ KApplication::setQuitOnLastWindowClosed(true);
#endif
m_localServer = new QLocalServer(this);
@@ -133,6 +108,9 @@ BrowserApplication::BrowserApplication(int &argc, char **argv)
QTimer::singleShot(0, this, SLOT(postLaunch()));
}
+
+
+
BrowserApplication::~BrowserApplication()
{
delete s_downloadManager;
@@ -141,6 +119,8 @@ BrowserApplication::~BrowserApplication()
delete s_bookmarksManager;
}
+
+
#if defined(Q_WS_MAC)
void BrowserApplication::lastWindowClosed()
{
@@ -151,11 +131,15 @@ void BrowserApplication::lastWindowClosed()
}
#endif
+
+
BrowserApplication *BrowserApplication::instance()
{
return (static_cast<BrowserApplication *>(QCoreApplication::instance()));
}
+
+
#if defined(Q_WS_MAC)
#include <QtGui/QMessageBox>
void BrowserApplication::quitBrowser()
@@ -180,6 +164,9 @@ void BrowserApplication::quitBrowser()
}
#endif
+
+
+
/*!
Any actions that can be delayed until the window is visible
*/
@@ -196,15 +183,18 @@ 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());
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ int n = args->count();
+ if (n > 1)
+ mainWindow()->loadPage(args->arg(n-1));
else
mainWindow()->slotHome();
}
BrowserApplication::historyManager();
}
+
+
void BrowserApplication::loadSettings()
{
QSettings settings;
@@ -234,6 +224,9 @@ void BrowserApplication::loadSettings()
settings.endGroup();
}
+
+
+
QList<BrowserMainWindow*> BrowserApplication::mainWindows()
{
clean();
@@ -243,6 +236,9 @@ QList<BrowserMainWindow*> BrowserApplication::mainWindows()
return list;
}
+
+
+
void BrowserApplication::clean()
{
// cleanup any deleted main windows first
@@ -251,6 +247,9 @@ void BrowserApplication::clean()
m_mainWindows.removeAt(i);
}
+
+
+
void BrowserApplication::saveSession()
{
QWebSettings *globalSettings = QWebSettings::globalSettings();
@@ -274,11 +273,17 @@ void BrowserApplication::saveSession()
settings.endGroup();
}
+
+
+
bool BrowserApplication::canRestoreSession() const
{
return !m_lastSession.isEmpty();
}
+
+
+
void BrowserApplication::restoreLastSession()
{
QList<QByteArray> windows;
@@ -305,16 +310,20 @@ void BrowserApplication::restoreLastSession()
}
}
+
+
bool BrowserApplication::isTheOnlyBrowser() const
{
return (m_localServer != 0);
}
+
+
void BrowserApplication::installTranslator(const QString &name)
{
QTranslator *translator = new QTranslator(this);
translator->load(name, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
- QApplication::installTranslator(translator);
+ KApplication::installTranslator(translator);
}
#if defined(Q_WS_MAC)
@@ -339,15 +348,19 @@ bool BrowserApplication::event(QEvent* event)
default:
break;
}
- return QApplication::event(event);
+ return KApplication::event(event);
}
#endif
+
+
void BrowserApplication::openUrl(const QUrl &url)
{
mainWindow()->loadPage(url.toString());
}
+
+
BrowserMainWindow *BrowserApplication::newMainWindow()
{
BrowserMainWindow *browser = new BrowserMainWindow();
@@ -356,6 +369,9 @@ BrowserMainWindow *BrowserApplication::newMainWindow()
return browser;
}
+
+
+
BrowserMainWindow *BrowserApplication::mainWindow()
{
clean();
@@ -364,6 +380,9 @@ BrowserMainWindow *BrowserApplication::mainWindow()
return m_mainWindows[0];
}
+
+
+
void BrowserApplication::newLocalSocketConnection()
{
QLocalSocket *socket = m_localServer->nextPendingConnection();
@@ -389,11 +408,16 @@ void BrowserApplication::newLocalSocketConnection()
mainWindow()->activateWindow();
}
+
+
CookieJar *BrowserApplication::cookieJar()
{
return (CookieJar*)networkAccessManager()->cookieJar();
}
+
+
+
DownloadManager *BrowserApplication::downloadManager()
{
if (!s_downloadManager) {
@@ -402,6 +426,8 @@ DownloadManager *BrowserApplication::downloadManager()
return s_downloadManager;
}
+
+
NetworkAccessManager *BrowserApplication::networkAccessManager()
{
if (!s_networkAccessManager) {
@@ -411,6 +437,8 @@ NetworkAccessManager *BrowserApplication::networkAccessManager()
return s_networkAccessManager;
}
+
+
HistoryManager *BrowserApplication::historyManager()
{
if (!s_historyManager) {
@@ -420,6 +448,9 @@ HistoryManager *BrowserApplication::historyManager()
return s_historyManager;
}
+
+
+
BookmarksManager *BrowserApplication::bookmarksManager()
{
if (!s_bookmarksManager) {
@@ -428,6 +459,8 @@ BookmarksManager *BrowserApplication::bookmarksManager()
return s_bookmarksManager;
}
+
+
QIcon BrowserApplication::icon(const QUrl &url) const
{
QIcon icon = QWebSettings::iconForUrl(url);
diff --git a/src/browserapplication.h b/src/browserapplication.h
index 19d02a47..73b908ce 100644
--- a/src/browserapplication.h
+++ b/src/browserapplication.h
@@ -1,49 +1,32 @@
-/****************************************************************************
-**
-** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information
-** to ensure GNU General Public Licensing requirements will be met:
-** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
-** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
-** exception, Nokia gives you certain additional rights. These rights
-** are described in the Nokia Qt GPL Exception version 1.3, included in
-** the file GPL_EXCEPTION.txt in this package.
-**
-** Qt for Windows(R) Licensees
-** As a special exception, Nokia, as the sole copyright holder for Qt
-** Designer, grants users of the Qt/Eclipse Integration plug-in the
-** right for the Qt/Eclipse Integration to link to functionality
-** provided by Qt Designer and its related libraries.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-**
-****************************************************************************/
+/* ============================================================
+ *
+ * This file is a part of the reKonq project
+ *
+ * Copyright (C) 2008 by Andrea Diamantini <adjam7 at gmail dot com>
+ *
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, 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.
+ *
+ * ============================================================ */
+
#ifndef BROWSERAPPLICATION_H
#define BROWSERAPPLICATION_H
-#include <QtGui/QApplication>
-
-#include <QtCore/QUrl>
-#include <QtCore/QPointer>
+#include <KApplication>
+#include <KCmdLineArgs>
-#include <QtGui/QIcon>
+#include <QUrl>
+#include <QPointer>
+#include <QIcon>
QT_BEGIN_NAMESPACE
class QLocalServer;
@@ -55,12 +38,13 @@ class CookieJar;
class DownloadManager;
class HistoryManager;
class NetworkAccessManager;
-class BrowserApplication : public QApplication
+
+class BrowserApplication : public KApplication
{
Q_OBJECT
public:
- BrowserApplication(int &argc, char **argv);
+ BrowserApplication(KCmdLineArgs*, const QString &);
~BrowserApplication();
static BrowserApplication *instance();
void loadSettings();
diff --git a/src/main.cpp b/src/main.cpp
index ae4c2173..badfd296 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -18,11 +18,13 @@
 * ============================================================ */
+#include "browserapplication.h"
+
#include <KAboutData>
#include <KCmdLineArgs>
-#include "browserapplication.h"
+// really simple writing main files today..
int main(int argc, char **argv)
{
KAboutData aboutData(
@@ -42,13 +44,14 @@ int main(int argc, char **argv)
aboutData.setProgramIconName("application-internet");
KCmdLineArgs::init( argc, argv, &aboutData );
+
KCmdLineOptions options;
-
- //TODO make this work
options.add("+URL", ki18n("Location to open"));
KCmdLineArgs::addCmdLineOptions( options );
- BrowserApplication app(argc, argv);
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ BrowserApplication app(args, "reKonq");
if (!app.isTheOnlyBrowser())
return 0;
app.newMainWindow();