From c0190e41f7f2e5fe30fa8556fa35f43950afbfdb Mon Sep 17 00:00:00 2001 From: adjam Date: Sun, 3 May 2009 23:51:22 +0000 Subject: Importing recode (rekonq code). I'm sorry I coudn't perform this with gitsvn or tailor.. but I cannot lose all the evening just for this. And I need to sleep now.. git-svn-id: svn+ssh://svn.kde.org/home/kde/trunk/playground/network/rekonq@963146 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- src/application.cpp | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 src/application.cpp (limited to 'src/application.cpp') diff --git a/src/application.cpp b/src/application.cpp new file mode 100644 index 00000000..ec24691e --- /dev/null +++ b/src/application.cpp @@ -0,0 +1,206 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2008 by Andrea Diamantini +* Copyright (C) 2009 by Paweł Prażak +* +* +* 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. +* +* ============================================================ */ + + + +// Self Includes +#include "application.h" +#include "application.moc" + +// Auto Includes +#include "rekonq.h" + +// Local Includes +#include "mainwindow.h" +#include "cookiejar.h" +#include "history.h" +#include "networkaccessmanager.h" +#include "mainview.h" +#include "webview.h" +#include "download.h" + +// KDE Includes +#include +#include +#include +#include +#include +#include + +// Qt Includes +#include +#include + + +QPointer Application::s_historyManager; +QPointer Application::s_networkAccessManager; +QPointer Application::s_downloadManager; +QPointer Application::s_bookmarkProvider; + + + +Application::Application() + : KUniqueApplication() +{ +} + + +Application::~Application() +{ + delete m_mainWindow; + delete s_bookmarkProvider; + delete s_networkAccessManager; + delete s_historyManager; +} + + +int Application::newInstance() +{ + KCmdLineArgs::setCwd(QDir::currentPath().toUtf8()); + KCmdLineArgs* args = KCmdLineArgs::parsedArgs(); + + if (!m_mainWindow) + { + m_mainWindow = new MainWindow(); + + m_mainWindow->setObjectName("MainWindow"); + setWindowIcon(KIcon("rekonq")); + + m_mainWindow->show(); + + QTimer::singleShot(0, this, SLOT(postLaunch())); + } + + if (args->count() > 0) + { + for (int i = 0; i < args->count(); ++i) + { + KUrl url = MainWindow::guessUrlFromString(args->arg(i)); + newWebView(); + mainWindow()->loadUrl(url); + } + args->clear(); + } + else + { + newWebView(); + mainWindow()->slotHome(); + } + + return 0; +} + + +Application *Application::instance() +{ + return (static_cast(QCoreApplication::instance())); +} + + +void Application::postLaunch() +{ + // set Icon Database Path to store "favicons" associated with web sites + QString directory = KStandardDirs::locateLocal("cache" , "" , true); + if (directory.isEmpty()) + { + directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName(); + } + QWebSettings::setIconDatabasePath(directory); + + Application::historyManager(); +} + + + +void Application::slotSaveConfiguration() const +{ + ReKonfig::self()->writeConfig(); +} + + +MainWindow *Application::mainWindow() +{ + return m_mainWindow; +} + + +WebView *Application::newWebView(Rekonq::OpenType type) +{ + return m_mainWindow->mainView()->newWebView(type); +} + + +CookieJar *Application::cookieJar() +{ + return (CookieJar*)networkAccessManager()->cookieJar(); +} + + +NetworkAccessManager *Application::networkAccessManager() +{ + if (!s_networkAccessManager) + { + s_networkAccessManager = new NetworkAccessManager(); + s_networkAccessManager->setCookieJar(new CookieJar); + } + return s_networkAccessManager; +} + + +HistoryManager *Application::historyManager() +{ + if (!s_historyManager) + { + s_historyManager = new HistoryManager(); + QWebHistoryInterface::setDefaultInterface(s_historyManager); + } + return s_historyManager; +} + + +DownloadManager *Application::downloadManager() +{ + if (!s_downloadManager) + { + s_downloadManager = new DownloadManager(); + } + return s_downloadManager; +} + + +BookmarkProvider *Application::bookmarkProvider() +{ + if (!s_bookmarkProvider) + { + s_bookmarkProvider = new BookmarkProvider(); + } + return s_bookmarkProvider; +} + + +KIcon Application::icon(const KUrl &url) const +{ + KIcon icon = KIcon(QWebSettings::iconForUrl(url)); + if (icon.isNull()) + { + icon = KIcon("kde"); + } + return icon; +} -- cgit v1.2.1