summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/application.cpp59
-rw-r--r--src/application.h6
-rw-r--r--src/historymenu.cpp109
-rw-r--r--src/historymenu.h76
-rw-r--r--src/mainwindow.cpp2
-rw-r--r--src/mainwindow.h1
7 files changed, 42 insertions, 212 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7a6c93e5..a2d0db60 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -10,7 +10,6 @@ SET( rekonq_SRCS
cookiejar.cpp
history.cpp
historymodels.cpp
- historymenu.cpp
bookmarks.cpp
modelmenu.cpp
urlbar.cpp
diff --git a/src/application.cpp b/src/application.cpp
index 8e1740fc..5aefb4fb 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -73,7 +73,7 @@ Application::Application()
Application::~Application()
{
- delete m_mainWindow;
+ qDeleteAll(m_mainWindows);
delete s_bookmarkProvider;
delete s_networkAccessManager;
delete s_historyManager;
@@ -85,17 +85,11 @@ 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()));
- }
+ // creating new window
+ MainWindow *w = new MainWindow;
+ w->setObjectName("MainWindow");
+ m_mainWindows.prepend(w);
+ w->show();
if (args->count() > 0)
{
@@ -107,8 +101,8 @@ int Application::newInstance()
}
else
{
- m_mainWindow->mainView()->newTab();
- m_mainWindow->slotHome();
+ w->mainView()->newTab();
+ w->slotHome();
}
return 0;
@@ -123,6 +117,8 @@ Application *Application::instance()
void Application::postLaunch()
{
+ setWindowIcon(KIcon("rekonq"));
+
// set Icon Database Path to store "favicons" associated with web sites
QString directory = KStandardDirs::locateLocal("cache" , "" , true);
if (directory.isEmpty())
@@ -143,7 +139,23 @@ void Application::slotSaveConfiguration() const
MainWindow *Application::mainWindow()
{
- return m_mainWindow;
+ if(m_mainWindows.isEmpty())
+ {
+ kDebug() << "No extant windows: creating one new...";
+ MainWindow *w = new MainWindow();
+ m_mainWindows.prepend(w);
+ w->show();
+ QTimer::singleShot(0, this, SLOT(postLaunch()));
+ return w;
+ }
+
+ MainWindow *active = qobject_cast<MainWindow*>(QApplication::activeWindow());
+
+ if(!active)
+ {
+ return m_mainWindows.at(0);
+ }
+ return active;
}
@@ -302,26 +314,27 @@ void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type)
}
WebView *webView = 0;
-
+ MainWindow *w = mainWindow();
+
switch(type)
{
case Rekonq::SettingOpenTab:
- webView = m_mainWindow->mainView()->newWebView(!ReKonfig::openTabsBack());
+ webView = w->mainView()->newWebView(!ReKonfig::openTabsBack());
if (!ReKonfig::openTabsBack())
{
- m_mainWindow->mainView()->urlBar()->setUrl(loadingUrl.prettyUrl());
+ w->mainView()->urlBar()->setUrl(loadingUrl.prettyUrl());
}
break;
case Rekonq::NewCurrentTab:
- webView = m_mainWindow->mainView()->newWebView(true);
- m_mainWindow->mainView()->urlBar()->setUrl(loadingUrl.prettyUrl());
+ webView = w->mainView()->newWebView(true);
+ w->mainView()->urlBar()->setUrl(loadingUrl.prettyUrl());
break;
case Rekonq::NewBackTab:
- webView = m_mainWindow->mainView()->newWebView(false);
+ webView = w->mainView()->newWebView(false);
break;
case Rekonq::CurrentTab:
- webView = m_mainWindow->mainView()->currentWebView();
- m_mainWindow->mainView()->urlBar()->setUrl(loadingUrl.prettyUrl());
+ webView = w->mainView()->currentWebView();
+ w->mainView()->urlBar()->setUrl(loadingUrl.prettyUrl());
break;
};
diff --git a/src/application.h b/src/application.h
index 44173373..01558b9f 100644
--- a/src/application.h
+++ b/src/application.h
@@ -39,6 +39,7 @@
// Qt Includes
#include <QPointer>
+#include <QList>
// Forward Declarations
class KIcon;
@@ -50,6 +51,9 @@ class MainWindow;
class NetworkAccessManager;
+typedef QList< QPointer<MainWindow> > MainWindowList;
+
+
namespace Rekonq
{
/**
@@ -134,7 +138,7 @@ private:
static QPointer<NetworkAccessManager> s_networkAccessManager;
static QPointer<BookmarkProvider> s_bookmarkProvider;
- QPointer<MainWindow> m_mainWindow;
+ MainWindowList m_mainWindows;
};
#endif // APPLICATION_H
diff --git a/src/historymenu.cpp b/src/historymenu.cpp
deleted file mode 100644
index f7029d64..00000000
--- a/src/historymenu.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved
-* Copyright (C) 2008-2009 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 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-// Auto Includes
-#include "historymenu.h"
-#include "historymenu.moc"
-
-// Local Includes
-#include "application.h"
-#include "mainwindow.h"
-
-// Qt Includes
-#include <QtGui/QWidget>
-#include <QtCore/QModelIndex>
-
-// KDE Includes
-#include <KMessageBox>
-
-
-HistoryMenu::HistoryMenu(QWidget *parent)
- : ModelMenu(parent)
- , m_history(0)
-{
- connect(this, SIGNAL(activated(const QModelIndex &)), this, SLOT(activated(const QModelIndex &)));
- setHoverRole(HistoryModel::UrlStringRole);
-}
-
-
-void HistoryMenu::activated(const QModelIndex &index)
-{
- emit openUrl(index.data(HistoryModel::UrlRole).toUrl());
-}
-
-
-bool HistoryMenu::prePopulated()
-{
- if (!m_history)
- {
- m_history = Application::historyManager();
- m_historyMenuModel = new HistoryMenuModel(m_history->historyTreeModel(), this);
- setModel(m_historyMenuModel);
- }
- // initial actions
- for (int i = 0; i < m_initialActions.count(); ++i)
- addAction(m_initialActions.at(i));
- if (!m_initialActions.isEmpty())
- addSeparator();
- setFirstSeparator(m_historyMenuModel->bumpedRows());
-
- return false;
-}
-
-
-void HistoryMenu::postPopulated()
-{
- if (m_history->history().count() > 0)
- addSeparator();
-
- QAction *showAllAction = Application::instance()->mainWindow()->actionByName("show_history_panel");
- showAllAction->setIcon(KIcon("view-history"));
- addAction(showAllAction);
-
- KAction *clearAction = new KAction(i18n("Clear History"), this);
- connect(clearAction, SIGNAL(triggered()), this, SLOT(clearHistory()));
- addAction(clearAction);
-}
-
-
-void HistoryMenu::clearHistory()
-{
- int res = KMessageBox::warningYesNo(this, i18n("Are you sure you want to clear the history?"), i18n("Clear History") );
-
- if (res == KMessageBox::Yes)
- {
- m_history->clear();
- }
-}
-
-
-void HistoryMenu::setInitialActions(QList<QAction*> actions)
-{
- m_initialActions = actions;
- for (int i = 0; i < m_initialActions.count(); ++i)
- addAction(m_initialActions.at(i));
-}
diff --git a/src/historymenu.h b/src/historymenu.h
deleted file mode 100644
index 0237777f..00000000
--- a/src/historymenu.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved
-* Copyright (C) 2008-2009 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 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-#ifndef HISTORYMENU_H
-#define HISTORYMENU_H
-
-// Local Includes
-#include "history.h"
-#include "historymodels.h"
-
-// Qt Includes
-#include <QtCore/QList>
-#include <QtGui/QAction>
-
-// Forward Declarations
-class ModelMenu;
-class QWidget;
-class QModelIndex;
-class KUrl;
-
-
-/**
- * Menu that is dynamically populated from the history
- *
- */
-
-class HistoryMenu : public ModelMenu
-{
- Q_OBJECT
-
-signals:
- void openUrl(const KUrl &url);
-
-public:
- HistoryMenu(QWidget *parent = 0);
- void setInitialActions(QList<QAction*> actions);
-
-protected:
- bool prePopulated();
- void postPopulated();
-
-private slots:
- void activated(const QModelIndex &index);
- void clearHistory();
-
-private:
- HistoryManager *m_history;
- HistoryMenuModel *m_historyMenuModel;
- QList<QAction*> m_initialActions;
-};
-
-#endif
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 2e8852f0..8d288ff9 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -36,7 +36,7 @@
// Local Includes
#include "application.h"
#include "settings.h"
-#include "historymenu.h"
+#include "history.h"
#include "cookiejar.h"
#include "networkaccessmanager.h"
#include "bookmarks.h"
diff --git a/src/mainwindow.h b/src/mainwindow.h
index fe4d3089..a30ff208 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -46,7 +46,6 @@ class QWebFrame;
class KAction;
class KPassivePopup;
-class HistoryMenu;
class FindBar;
class SidePanel;
class WebView;