summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/application.cpp1
-rw-r--r--src/application.h13
-rw-r--r--src/cookiejar.h1
-rw-r--r--src/history.cpp2
-rw-r--r--src/history.ui74
-rw-r--r--src/historydialog.cpp129
-rw-r--r--src/historydialog.h57
-rw-r--r--src/historymenu.cpp24
-rw-r--r--src/historymenu.h6
-rw-r--r--src/kaccessmanager.h2
-rw-r--r--src/main.cpp2
-rw-r--r--src/mainview.cpp116
-rw-r--r--src/mainview.h23
-rw-r--r--src/mainwindow.cpp132
-rw-r--r--src/mainwindow.h36
-rw-r--r--src/modelmenu.cpp38
-rw-r--r--src/networkmanager.cpp9
-rw-r--r--src/networkmanager.h11
-rw-r--r--src/rekonqui.rc13
-rw-r--r--src/tabbar.cpp19
-rw-r--r--src/webpage.cpp47
-rw-r--r--src/webpage.h18
-rw-r--r--src/webview.h8
24 files changed, 266 insertions, 518 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 92fd9d53..ed3205b8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -21,7 +21,6 @@ SET( rekonq_SRCS
edittableview.cpp
edittreeview.cpp
history.cpp
- historydialog.cpp
historymenu.cpp
bookmarks.cpp
modelmenu.cpp
@@ -44,7 +43,7 @@ SET( rekonq_SRCS
KDE4_ADD_UI_FILES( rekonq_SRCS
cookies.ui
cookiesexceptions.ui
- history.ui
+ #history.ui
password.ui
proxy.ui
settings_general.ui
diff --git a/src/application.cpp b/src/application.cpp
index 94821653..5b458438 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -42,6 +42,7 @@
#include <KConfig>
#include <kio/job.h>
#include <kio/jobclasses.h>
+#include <KPassivePopup>
// Qt Includes
#include <QtCore/QTimer>
diff --git a/src/application.h b/src/application.h
index a5658703..d2e66d3f 100644
--- a/src/application.h
+++ b/src/application.h
@@ -58,6 +58,19 @@ namespace Rekonq
New, ///< open url in new tab and make it current
Background ///< open url in new tab in background
};
+
+ /**
+ * @short notifying message status
+ * Different message status
+ */
+
+ enum Notify
+ {
+ Success, ///< url successfully (down)loaded
+ Error, ///< url failed to (down)load
+ Download, ///< downloading url
+ Info ///< information, (default)
+ };
}
diff --git a/src/cookiejar.h b/src/cookiejar.h
index 56adc0b3..5bfe7749 100644
--- a/src/cookiejar.h
+++ b/src/cookiejar.h
@@ -29,7 +29,6 @@
#include <QtNetwork/QNetworkCookieJar>
// Forward Declarations
-class AutoSaver;
class QUrl;
diff --git a/src/history.cpp b/src/history.cpp
index dcfe4c21..11cd3653 100644
--- a/src/history.cpp
+++ b/src/history.cpp
@@ -540,7 +540,7 @@ bool HistoryModel::removeRows(int row, int count, const QModelIndex &parent)
// -----------------------------------------------------------------------------------------------
-#define MOVEDROWS 10
+#define MOVEDROWS 20
/*
diff --git a/src/history.ui b/src/history.ui
deleted file mode 100644
index 1f3e1016..00000000
--- a/src/history.ui
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>historyWidget</class>
- <widget class="QWidget" name="Form">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>584</width>
- <height>381</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QHBoxLayout">
- <item>
- <widget class="QPushButton" name="removeButton">
- <property name="text">
- <string>&amp;Remove</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="removeAllButton">
- <property name="text">
- <string>Remove &amp;All</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Search:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KLineEdit" name="search"/>
- </item>
- </layout>
- </item>
- <item>
- <widget class="EditTreeView" name="tree"/>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>KLineEdit</class>
- <extends>QLineEdit</extends>
- <header>klineedit.h</header>
- </customwidget>
- <customwidget>
- <class>EditTreeView</class>
- <extends>QTreeView</extends>
- <header>edittreeview.h</header>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/historydialog.cpp b/src/historydialog.cpp
deleted file mode 100644
index 6a150952..00000000
--- a/src/historydialog.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 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 3, 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.
-*
-* ============================================================ */
-
-
-// Auto Includes
-#include "historydialog.h"
-#include "historydialog.moc"
-
-// Local Includes
-#include "history.h"
-#include "application.h"
-
-// KDE Includes
-#include <KAction>
-#include <KUrl>
-
-// Qt Includes
-#include <QtCore/QPoint>
-
-#include <QtGui/QWidget>
-#include <QtGui/QClipboard>
-#include <QtGui/QDesktopWidget>
-
-
-HistoryDialog::HistoryDialog(QWidget *parent, HistoryManager *setHistory)
- : KDialog(parent)
- , m_historyWidg(new Ui::historyWidget)
-{
- HistoryManager *history = setHistory;
- if (!history)
- history = Application::historyManager();
-
- setCaption( i18n("History") );
- setButtons( KDialog::Close );
-
- QWidget *widget = new QWidget;
- m_historyWidg->setupUi(widget);
- setMainWidget(widget);
-
- m_historyWidg->search->setClearButtonShown(true);
-
- m_historyWidg->tree->setUniformRowHeights(true);
- m_historyWidg->tree->setSelectionBehavior(QAbstractItemView::SelectRows);
- m_historyWidg->tree->setTextElideMode(Qt::ElideMiddle);
-
- QAbstractItemModel *model = history->historyTreeModel();
- TreeProxyModel *proxyModel = new TreeProxyModel(this);
-
- connect(m_historyWidg->search, SIGNAL(textChanged(QString)), proxyModel, SLOT(setFilterFixedString(QString)));
- connect(m_historyWidg->removeButton, SIGNAL(clicked()), m_historyWidg->tree, SLOT(removeOne()));
- connect(m_historyWidg->removeAllButton, SIGNAL(clicked()), history, SLOT(clear()));
-
- proxyModel->setSourceModel(model);
- m_historyWidg->tree->setModel(proxyModel);
- m_historyWidg->tree->setExpanded(proxyModel->index(0, 0), true);
- m_historyWidg->tree->setAlternatingRowColors(true);
-
- QFontMetrics fm(font());
- int header = fm.width(QLatin1Char('m')) * 25;
- m_historyWidg->tree->header()->resizeSection(0, header);
- m_historyWidg->tree->header()->setStretchLastSection(true);
-
- m_historyWidg->tree->setContextMenuPolicy(Qt::CustomContextMenu);
-
- connect(m_historyWidg->tree, SIGNAL(customContextMenuRequested(const QPoint &)),
- this, SLOT(customContextMenuRequested(const QPoint &)));
-
- connect(m_historyWidg->tree, SIGNAL(activated(const QModelIndex&)), this, SLOT(open()));
-}
-
-
-void HistoryDialog::customContextMenuRequested(const QPoint &pos)
-{
- KMenu menu;
- QModelIndex index = m_historyWidg->tree->indexAt(pos);
- index = index.sibling(index.row(), 0);
- if (index.isValid() && !m_historyWidg->tree->model()->hasChildren(index))
- {
- menu.addAction(i18n("Open"), this, SLOT(open()));
- menu.addSeparator();
- menu.addAction(i18n("Copy"), this, SLOT(copy()));
- }
- menu.addAction(i18n("Delete"), m_historyWidg->tree, SLOT(removeOne()));
- menu.exec(QCursor::pos());
-}
-
-
-void HistoryDialog::open()
-{
- QModelIndex index = m_historyWidg->tree->currentIndex();
- if (!index.parent().isValid())
- return;
- emit openUrl(index.data(HistoryModel::UrlRole).toUrl());
-}
-
-
-void HistoryDialog::copy()
-{
- QModelIndex index = m_historyWidg->tree->currentIndex();
- if (!index.parent().isValid())
- return;
- QString url = index.data(HistoryModel::UrlStringRole).toString();
-
- QClipboard *clipboard = QApplication::clipboard();
- clipboard->setText(url);
-}
-
-QSize HistoryDialog::sizeHint() const
-{
- QRect desktopRect = Application::desktop()->screenGeometry();
- QSize size = desktopRect.size() * 0.7;
- return size;
-}
diff --git a/src/historydialog.h b/src/historydialog.h
deleted file mode 100644
index 20f92d9d..00000000
--- a/src/historydialog.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 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 3, 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 HISTORYDIALOG_H
-#define HISTORYDIALOG_H
-
-
-// Ui includes
-#include "ui_history.h"
-
-// KDE Includes
-#include <KDialog>
-
-class KUrl;
-class QPoint;
-class QWidget;
-class HistoryManager;
-
-class HistoryDialog : public KDialog
-{
- Q_OBJECT
-
-signals:
- void openUrl(const KUrl &url);
-
-public:
- explicit HistoryDialog(QWidget *parent = 0, HistoryManager *history = 0);
- QSize sizeHint() const;
-
-private slots:
- void customContextMenuRequested(const QPoint &pos);
- void open();
- void copy();
-
-private:
- Ui::historyWidget *m_historyWidg;
-};
-
-#endif
diff --git a/src/historymenu.cpp b/src/historymenu.cpp
index 234236ac..b5edae3f 100644
--- a/src/historymenu.cpp
+++ b/src/historymenu.cpp
@@ -19,16 +19,22 @@
* ============================================================ */
+// Auto Includes
#include "historymenu.h"
#include "historymenu.moc"
+// Local Includes
#include "application.h"
-#include "historydialog.h"
+#include "mainwindow.h"
+// Qt Includes
#include <QtGui/QWidget>
#include <QtCore/QModelIndex>
+// KDE Includes
#include <KUrl>
+#include <KMessageBox>
+
HistoryMenu::HistoryMenu(QWidget *parent)
: ModelMenu(parent)
@@ -69,21 +75,23 @@ void HistoryMenu::postPopulated()
if (m_history->history().count() > 0)
addSeparator();
- KAction *showAllAction = new KAction(i18n("Show All History"), this);
- connect(showAllAction, SIGNAL(triggered()), this, SLOT(showHistoryDialog()));
+ QAction *showAllAction = Application::instance()->mainWindow()->actionByName("show_history_panel");
addAction(showAllAction);
KAction *clearAction = new KAction(i18n("Clear History"), this);
- connect(clearAction, SIGNAL(triggered()), m_history, SLOT(clear()));
+ connect(clearAction, SIGNAL(triggered()), this, SLOT(clearHistory()));
addAction(clearAction);
}
-void HistoryMenu::showHistoryDialog()
+void HistoryMenu::clearHistory()
{
- HistoryDialog *dialog = new HistoryDialog(this);
- connect(dialog, SIGNAL(openUrl(const KUrl&)), this, SIGNAL(openUrl(const KUrl&)));
- dialog->show();
+ int res = KMessageBox::warningYesNo(this, i18n("Are you sure you want to delete history?"), i18n("History") );
+
+ if (res == KMessageBox::Yes)
+ {
+ m_history->clear();
+ }
}
diff --git a/src/historymenu.h b/src/historymenu.h
index ec529b65..64395951 100644
--- a/src/historymenu.h
+++ b/src/historymenu.h
@@ -22,16 +22,20 @@
#ifndef HISTORYMENU_H
#define HISTORYMENU_H
+// Local Includes
#include "history.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
*
@@ -54,7 +58,7 @@ protected:
private slots:
void activated(const QModelIndex &index);
- void showHistoryDialog();
+ void clearHistory();
private:
HistoryManager *m_history;
diff --git a/src/kaccessmanager.h b/src/kaccessmanager.h
index 8325c890..ed5c208d 100644
--- a/src/kaccessmanager.h
+++ b/src/kaccessmanager.h
@@ -27,8 +27,6 @@
#include <kdenetwork/knetworkreply.h>
// Forward Declarations
-class QNetworkRequest;
-class QIODevice;
class NetworkAccessManager : public KNetworkAccessManager
diff --git a/src/main.cpp b/src/main.cpp
index d21bb580..d97017ca 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -31,7 +31,7 @@ static const char description[] =
I18N_NOOP("WebKit based Web Browser for KDE");
-static const char version[] = "0.1.4";
+static const char version[] = "0.1.6";
int main(int argc, char **argv)
diff --git a/src/mainview.cpp b/src/mainview.cpp
index 6f3ad926..75154528 100644
--- a/src/mainview.cpp
+++ b/src/mainview.cpp
@@ -61,10 +61,9 @@
MainView::MainView(QWidget *parent)
: KTabWidget(parent)
- , m_recentlyClosedTabsAction(0)
- , m_recentlyClosedTabsMenu(new KMenu(this))
, m_urlBars(new StackedUrlBar(this))
, m_tabBar(new TabBar(this))
+ , m_addTabButton(new QToolButton(this))
{
// setting tabbar
setTabBar(m_tabBar);
@@ -97,12 +96,40 @@ MainView::~MainView()
void MainView::postLaunch()
{
- // Recently Closed Tab Action
- connect(m_recentlyClosedTabsMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowRecentTabsMenu()));
- connect(m_recentlyClosedTabsMenu, SIGNAL(triggered(QAction *)), this, SLOT(aboutToShowRecentTriggeredAction(QAction *)));
- m_recentlyClosedTabsAction = new KAction(i18n("Recently Closed Tabs"), this);
- m_recentlyClosedTabsAction->setMenu(m_recentlyClosedTabsMenu);
- m_recentlyClosedTabsAction->setEnabled(false);
+ m_addTabButton->setDefaultAction(Application::instance()->mainWindow()->actionByName("new_tab"));
+ m_addTabButton->setAutoRaise(true);
+ m_addTabButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
+}
+
+
+void MainView::addTabButtonPosition()
+{
+ static bool ButtonInCorner = false;
+
+ QSize s1 = frameSize();
+ int tabWidgetWidth = s1.width();
+
+ QSize s2 = tabBar()->sizeHint();
+ int newPos = s2.width();
+
+ if( newPos > tabWidgetWidth )
+ {
+ if(ButtonInCorner)
+ return;
+ setCornerWidget(m_addTabButton);
+ ButtonInCorner = true;
+ }
+ else
+ {
+ if(ButtonInCorner)
+ {
+ setCornerWidget(0);
+ m_addTabButton->show();
+ ButtonInCorner = false;
+ }
+ m_addTabButton->move(newPos, 0);
+ }
+
}
@@ -136,12 +163,6 @@ int MainView::webViewIndex(WebView *webView) const
}
-KAction *MainView::recentlyClosedTabsAction() const
-{
- return m_recentlyClosedTabsAction;
-}
-
-
void MainView::setMakeBackTab(bool b)
{
m_makeBackTab = b;
@@ -247,8 +268,6 @@ void MainView::slotWebPaste()
void MainView::clear()
{
- // clear the recently closed tabs
- m_recentlyClosedTabs.clear();
// clear the line edit history
for (int i = 0; i < m_urlBars->count(); ++i)
{
@@ -284,7 +303,7 @@ void MainView::slotCurrentChanged(int index)
WebView *oldWebView = this->webView(m_urlBars->currentIndex());
if (oldWebView)
{
- disconnect(oldWebView, SIGNAL(statusBarMessage(const QString&)),
+ disconnect(oldWebView->page(), SIGNAL(statusBarMessage(const QString&)),
this, SIGNAL(showStatusBarMessage(const QString&)));
disconnect(oldWebView->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString&)),
this, SIGNAL(linkHovered(const QString&)));
@@ -292,7 +311,7 @@ void MainView::slotCurrentChanged(int index)
this, SIGNAL(loadProgress(int)));
}
- connect(webView, SIGNAL(statusBarMessage(const QString&)), this, SIGNAL(showStatusBarMessage(const QString&)));
+ connect(webView->page(), SIGNAL(statusBarMessage(const QString&)), this, SIGNAL(showStatusBarMessage(const QString&)));
connect(webView->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString&)), this, SIGNAL(linkHovered(const QString&)));
connect(webView, SIGNAL(loadProgress(int)), this, SIGNAL(loadProgress(int)));
@@ -352,7 +371,6 @@ WebView *MainView::newWebView(Rekonq::OpenType type)
// connecting webview with mainview
connect(webView, SIGNAL(loadStarted()), this, SLOT(webViewLoadStarted()));
- connect(webView, SIGNAL(loadProgress(int)), this, SLOT(webViewLoadProgress(int)));
connect(webView, SIGNAL(loadFinished(bool)), this, SLOT(webViewLoadFinished(bool)));
connect(webView, SIGNAL(iconChanged()), this, SLOT(webViewIconChanged()));
connect(webView, SIGNAL(titleChanged(const QString &)), this, SLOT(webViewTitleChanged(const QString &)));
@@ -387,6 +405,7 @@ WebView *MainView::newWebView(Rekonq::OpenType type)
emit tabsChanged();
showTabBar();
+ addTabButtonPosition();
return webView;
}
@@ -446,6 +465,7 @@ void MainView::slotCloseOtherTabs(int index)
}
showTabBar();
+ addTabButtonPosition();
}
@@ -460,6 +480,7 @@ void MainView::slotCloneTab(int index)
tab->setUrl(webView(index)->url());
showTabBar();
+ addTabButtonPosition();
}
@@ -489,20 +510,6 @@ void MainView::slotCloseTab(int index)
return;
}
hasFocus = tab->hasFocus();
-
- m_recentlyClosedTabsAction->setEnabled(true);
- m_recentlyClosedTabs.prepend(tab->url());
-
- // don't add empty urls
- if (tab->url().isValid())
- {
- m_recentlyClosedTabs.prepend(tab->url());
- }
-
- if (m_recentlyClosedTabs.size() >= MainView::m_recentlyClosedTabsSize)
- {
- m_recentlyClosedTabs.removeLast();
- }
}
QWidget *urlBar = m_urlBars->urlBar(index);
@@ -521,6 +528,7 @@ void MainView::slotCloseTab(int index)
}
showTabBar();
+ addTabButtonPosition();
}
@@ -544,22 +552,6 @@ void MainView::webViewLoadStarted()
}
-void MainView::webViewLoadProgress(int progress)
-{
- WebView *webView = qobject_cast<WebView*>(sender());
- int index = webViewIndex(webView);
- if (index != currentIndex() || index < 0)
- {
- return;
- }
-
- double totalBytes = static_cast<double>(webView->page()->totalBytes() / 1024);
-
- QString message = i18n("Loading %1% (%2 %3)...", progress, totalBytes, QLatin1String("kB"));
- emit showStatusBarMessage(message);
-}
-
-
void MainView::webViewLoadFinished(bool ok)
{
WebView *webView = qobject_cast<WebView*>(sender());
@@ -582,9 +574,9 @@ void MainView::webViewLoadFinished(bool ok)
}
if (ok)
- emit showStatusBarMessage(i18n("Done"));
+ emit showStatusBarMessage(i18n("Done"), Rekonq::Success);
else
- emit showStatusBarMessage(i18n("Failed to load"));
+ emit showStatusBarMessage(i18n("Failed to load"), Rekonq::Error);
}
@@ -637,28 +629,6 @@ void MainView::webViewUrlChanged(const QUrl &url)
}
-void MainView::aboutToShowRecentTabsMenu()
-{
- m_recentlyClosedTabsMenu->clear();
- for (int i = 0; i < m_recentlyClosedTabs.count(); ++i)
- {
- KAction *action = new KAction(m_recentlyClosedTabsMenu);
- action->setData(m_recentlyClosedTabs.at(i));
- QIcon icon = Application::instance()->icon(m_recentlyClosedTabs.at(i));
- action->setIcon(icon);
- action->setText(m_recentlyClosedTabs.at(i).prettyUrl());
- m_recentlyClosedTabsMenu->addAction(action);
- }
-}
-
-
-void MainView::aboutToShowRecentTriggeredAction(QAction *action)
-{
- KUrl url = action->data().toUrl();
- loadUrl(url);
-}
-
-
void MainView::loadUrl(const KUrl &url)
{
if (url.isEmpty())
diff --git a/src/mainview.h b/src/mainview.h
index dfa498f7..7cb4e035 100644
--- a/src/mainview.h
+++ b/src/mainview.h
@@ -30,18 +30,18 @@
// KDE Includes
#include <KTabWidget>
+// Qt Includes
+#include <QtGui/QToolButton>
+
// Forward Declarations
-class QLineEdit;
class QUrl;
class QWebFrame;
class QLabel;
class KAction;
-class KCompletion;
class KMenu;
class KUrl;
-class HistoryCompletionModel;
class StackedUrlBar;
class TabBar;
class UrlBar;
@@ -91,7 +91,7 @@ signals:
// current tab signals
void setCurrentTitle(const QString &url);
- void showStatusBarMessage(const QString &message);
+ void showStatusBarMessage(const QString &message, Rekonq::Notify status = Rekonq::Info);
void linkHovered(const QString &link);
void loadProgress(int progress);
@@ -112,6 +112,7 @@ public slots:
* @param url The url to load
*/
void loadUrl(const KUrl &url);
+
void slotCloneTab(int index = -1);
void slotCloseTab(int index = -1);
void slotCloseOtherTabs(int index);
@@ -133,11 +134,8 @@ public slots:
private slots:
void slotCurrentChanged(int index);
- void aboutToShowRecentTabsMenu();
- void aboutToShowRecentTriggeredAction(QAction *action); // need QAction!
void webViewLoadStarted();
- void webViewLoadProgress(int progress);
void webViewLoadFinished(bool ok);
void webViewIconChanged();
void webViewTitleChanged(const QString &title);
@@ -163,6 +161,8 @@ protected:
private:
+ void addTabButtonPosition();
+
/**
* This function creates (if not exists) and returns a QLabel
* with a loading QMovie.
@@ -175,19 +175,14 @@ private:
*/
QLabel *animatedLoading(int index, bool addMovie);
- static const int m_recentlyClosedTabsSize = 10;
- KAction *m_recentlyClosedTabsAction;
-
- KMenu *m_recentlyClosedTabsMenu;
- QList<KUrl> m_recentlyClosedTabs;
-
StackedUrlBar *m_urlBars;
TabBar *m_tabBar;
QString m_loadingGitPath;
bool m_makeBackTab;
+
+ QToolButton *m_addTabButton;
};
#endif
-
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index abc3fcd5..c7e3c945 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -57,6 +57,10 @@
#include <KGlobalSettings>
#include <KPushButton>
#include <KTemporaryFile>
+#include <KJobUiDelegate>
+#include <KPassivePopup>
+#include <KStandardDirs>
+#include <KIconLoader>
#include <kdeprintdialog.h>
#include <kprintpreview.h>
@@ -158,9 +162,9 @@ void MainWindow::postLaunch()
connect(m_view, SIGNAL(loadProgress(int)), this, SLOT(slotLoadProgress(int)));
connect(m_view, SIGNAL(printRequested(QWebFrame *)), this, SLOT(printRequested(QWebFrame *)));
- // status bar messages
- connect(m_view, SIGNAL(showStatusBarMessage(const QString&)), statusBar(), SLOT(showMessage(const QString&)));
- connect(m_view, SIGNAL(linkHovered(const QString&)), statusBar(), SLOT(showMessage(const QString&)));
+ // "status bar" messages (new notifyMessage system)
+ connect(m_view, SIGNAL(showStatusBarMessage(const QString&, Rekonq::Notify)), this, SLOT(notifyMessage(const QString&, Rekonq::Notify)));
+ connect(m_view, SIGNAL(linkHovered(const QString&)), this, SLOT(notifyMessage(const QString&)));
// update toolbar actions signals
connect(m_view, SIGNAL(tabsChanged()), this, SLOT(slotUpdateActions()));
@@ -292,11 +296,7 @@ void MainWindow::setupActions()
// ================ history related actions
m_historyBackAction = new KAction(KIcon("go-previous"), i18n("Back"), this);
- m_historyBackMenu = new KMenu(this);
- m_historyBackAction->setMenu(m_historyBackMenu);
connect(m_historyBackAction, SIGNAL(triggered(bool)), this, SLOT(slotOpenPrevious()));
- connect(m_historyBackMenu, SIGNAL(aboutToShow()), this, SLOT(slotAboutToShowBackMenu()));
- connect(m_historyBackMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotOpenActionUrl(QAction *)));
actionCollection()->addAction(QLatin1String("history_back"), m_historyBackAction);
m_historyForwardAction = new KAction(KIcon("go-next"), i18n("Forward"), this);
@@ -323,6 +323,11 @@ void MainWindow::setupActions()
a->setShortcuts(QApplication::isRightToLeft() ? KStandardShortcut::tabNext() : KStandardShortcut::tabPrev());
actionCollection()->addAction(QLatin1String("show_prev_tab"), a);
connect(a, SIGNAL(triggered(bool)), m_view, SLOT(previousTab()));
+
+ // ==================== Bookmarks Actions
+ a = new KAction(i18n("Add Bookmark"), this);
+ a->setIcon(KIcon("rating"));
+ actionCollection()->addAction(QLatin1String("add_bookmark"),a);
}
@@ -336,8 +341,9 @@ void MainWindow::setupSidePanel()
addDockWidget(Qt::LeftDockWidgetArea, m_sidePanel);
// setup side panel actions
- QAction* a = m_sidePanel->toggleViewAction();
- a->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_H));
+ KAction* a = (KAction *) m_sidePanel->toggleViewAction();
+ a->setText( i18n("History Panel") );
+ a->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_H)); // WARNING : is this the right shortcut ??
actionCollection()->addAction(QLatin1String("show_history_panel"), a);
}
@@ -346,7 +352,6 @@ void MainWindow::setupHistoryMenu()
{
HistoryMenu *historyMenu = new HistoryMenu(this);
connect(historyMenu, SIGNAL(openUrl(const KUrl&)), this, SLOT(loadUrl(const KUrl&)));
- connect(historyMenu, SIGNAL(hovered(const QString&)), this, SLOT(slotUpdateStatusbar(const QString&)));
historyMenu->setTitle(i18n("&History"));
// setting history menu position
@@ -356,7 +361,6 @@ void MainWindow::setupHistoryMenu()
QList<QAction*> historyActions;
historyActions.append(actionCollection()->action("history_back"));
historyActions.append(actionCollection()->action("history_forward"));
- historyActions.append(m_view->recentlyClosedTabsAction());
historyMenu->setInitialActions(historyActions);
}
@@ -425,7 +429,13 @@ void MainWindow::slotOpenLocation()
void MainWindow::slotFileSaveAs()
{
KUrl srcUrl = currentTab()->url();
- // FIXME implement download file
+
+ const QString destUrl = KFileDialog::getSaveFileName(srcUrl.fileName(), QString(), this);
+ if (destUrl.isEmpty()) return;
+ KIO::Job *job = KIO::file_copy(srcUrl, KUrl(destUrl), -1, KIO::Overwrite);
+ job->addMetaData("MaxCacheSize", "0"); // Don't store in http cache.
+ job->addMetaData("cache", "cache"); // Use entry from cache if available.
+ job->uiDelegate()->setAutoErrorHandlingEnabled(true);
}
@@ -447,12 +457,6 @@ void MainWindow::slotPreferences()
}
-void MainWindow::slotUpdateStatusbar(const QString &string)
-{
- statusBar()->showMessage(string, 2000);
-}
-
-
void MainWindow::slotUpdateActions()
{
m_historyBackAction->setEnabled(currentTab()->history()->canGoBack());
@@ -582,7 +586,7 @@ void MainWindow::slotFindNext()
if (!currentTab()->findText(m_lastSearch, options))
{
- slotUpdateStatusbar(QString(m_lastSearch) + i18n(" not found."));
+ notifyMessage(QString(m_lastSearch) + i18n(" not found."));
}
}
@@ -604,7 +608,7 @@ void MainWindow::slotFindPrevious()
if (!currentTab()->findText(m_lastSearch, options))
{
- slotUpdateStatusbar(QString(m_lastSearch) + i18n(" not found."));
+ notifyMessage(QString(m_lastSearch) + i18n(" not found."));
}
}
@@ -639,7 +643,6 @@ void MainWindow::slotViewFullScreen(bool makeFullScreen)
static bool menubarFlag;
static bool mainToolBarFlag;
static bool bookmarksToolBarFlag;
- static bool statusBarFlag;
static bool sidePanelFlag;
if (makeFullScreen == true)
@@ -648,13 +651,11 @@ void MainWindow::slotViewFullScreen(bool makeFullScreen)
menubarFlag = menuBar()->isHidden();
mainToolBarFlag = toolBar("mainToolBar")->isHidden();
bookmarksToolBarFlag = toolBar("bookmarksToolBar")->isHidden();
- statusBarFlag = statusBar()->isHidden();
sidePanelFlag = sidePanel()->isHidden();
menuBar()->hide();
toolBar("mainToolBar")->hide();
toolBar("bookmarksToolBar")->hide();
- statusBar()->hide();
sidePanel()->hide();
}
else
@@ -665,8 +666,6 @@ void MainWindow::slotViewFullScreen(bool makeFullScreen)
toolBar("mainToolBar")->show();
if (!bookmarksToolBarFlag)
toolBar("bookmarksToolBar")->show();
- if (!statusBarFlag)
- statusBar()->show();
if (!sidePanelFlag)
sidePanel()->show();
}
@@ -766,44 +765,6 @@ void MainWindow::slotLoadProgress(int progress)
}
-void MainWindow::slotAboutToShowBackMenu()
-{
- m_historyBackMenu->clear();
- if (!currentTab())
- return;
- QWebHistory *history = currentTab()->history();
- int historyCount = history->count();
- for (int i = history->backItems(historyCount).count() - 1; i >= 0; --i)
- {
- QWebHistoryItem item = history->backItems(history->count()).at(i);
- KAction *action = new KAction(this);
- action->setData(-1*(historyCount - i - 1));
- QIcon icon = Application::instance()->icon(item.url());
- action->setIcon(icon);
- action->setText(item.title());
- m_historyBackMenu->addAction(action);
- }
-}
-
-
-void MainWindow::slotOpenActionUrl(QAction *action)
-{
- int offset = action->data().toInt();
- QWebHistory *history = currentTab()->history();
- if (offset < 0)
- {
- history->goToItem(history->backItems(-1*offset).first()); // back
- }
- else
- {
- if (offset > 0)
- {
- history->goToItem(history->forwardItems(history->count() - offset + 1).back()); // forward
- }
- }
-}
-
-
void MainWindow::slotOpenPrevious()
{
QWebHistory *history = currentTab()->history();
@@ -888,3 +849,48 @@ QAction *MainWindow::actionByName(const QString name)
return new QAction(this); // return empty object instead of NULL pointer
}
+
+
+// FIXME: better implement me, please!!
+void MainWindow::notifyMessage(const QString &msg, Rekonq::Notify status)
+{
+ // deleting popus if empty msgs
+ if(msg.isEmpty())
+ {
+ delete m_popup;
+ return;
+ }
+
+ if(m_popup)
+ delete m_popup;
+
+ m_popup = new KPassivePopup(this);
+ m_popup->setAutoDelete(true);
+
+ QPixmap px;
+ QString pixPath;
+
+ switch(status)
+ {
+ case Rekonq::Info:
+ break;
+ case Rekonq::Success:
+ break;
+ case Rekonq::Error:
+ break;
+ case Rekonq::Download:
+ break;
+ default:
+ kDebug() << "nothing to be notified..";
+ break;
+ }
+
+ m_popup->setView(msg);
+
+ // setting popus in bottom-left position
+ int x = geometry().x();
+ int y = geometry().y() + height() - 45;
+ QPoint p(x,y);
+
+ m_popup->show(p);
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 411cbe6c..4e32e215 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -40,8 +40,8 @@ class QWebFrame;
class KUrl;
class KAction;
class KActionMenu;
-class KIcon;
class KMenu;
+class KPassivePopup;
class HistoryMenu;
class FindBar;
@@ -49,6 +49,23 @@ class SidePanel;
class WebView;
+// namespace Rekonq
+// {
+// /**
+// * @short notifying message status
+// * Different message status
+// */
+//
+// enum Notify
+// {
+// Success, ///< url successfully (down)loaded
+// Error, ///< url failed to (down)load
+// Download, ///< downloading url
+// Info ///< information, (default)
+// };
+// }
+
+
/**
* This class serves as the main window for rekonq.
* It handles the menus, toolbars, and status bars.
@@ -79,6 +96,17 @@ public slots:
void loadUrl(const KUrl &url);
void slotUpdateBrowser();
+ /**
+ * Notifies a message in a popup
+ *
+ * @param msg The message to notify
+ *
+ * @param status The status message
+ *
+ */
+ void notifyMessage(const QString &msg, Rekonq::Notify status = Rekonq::Info);
+
+
protected:
bool queryClose();
@@ -86,15 +114,12 @@ private slots:
void postLaunch();
void slotUpdateConfiguration();
void slotLoadProgress(int);
- void slotUpdateStatusbar(const QString &string);
void slotUpdateActions();
void slotUpdateWindowTitle(const QString &title = QString());
void slotOpenLocation();
- void slotAboutToShowBackMenu();
void geometryChangeRequested(const QRect &geometry);
// history related
- void slotOpenActionUrl(QAction *action);
void slotOpenPrevious();
void slotOpenNext();
@@ -131,7 +156,6 @@ private:
FindBar *m_findBar;
SidePanel *m_sidePanel;
- KMenu *m_historyBackMenu;
KMenu *m_windowMenu;
KActionMenu *m_historyActionMenu;
@@ -143,6 +167,8 @@ private:
QString m_lastSearch;
QString m_homePage;
+
+ QPointer<KPassivePopup> m_popup;
};
#endif // MAINWINDOW_H
diff --git a/src/modelmenu.cpp b/src/modelmenu.cpp
index 9ff37037..41c197f3 100644
--- a/src/modelmenu.cpp
+++ b/src/modelmenu.cpp
@@ -145,19 +145,25 @@ void ModelMenu::aboutToShow()
postPopulated();
}
+
+// WARNING
+// the code commented out here is to create a second separator in the history menu
+// with ALL history, subdivided by days.
void ModelMenu::createMenu(const QModelIndex &parent, int max, QMenu *parentMenu, QMenu *menu)
{
+ Q_UNUSED(parentMenu)
+
if (!menu)
{
- QString title = parent.data().toString();
- menu = new QMenu(title, this);
- QIcon icon = qvariant_cast<QIcon>(parent.data(Qt::DecorationRole));
- menu->setIcon(icon);
- parentMenu->addMenu(menu);
- QVariant v;
- v.setValue(parent);
- menu->menuAction()->setData(v);
- connect(menu, SIGNAL(aboutToShow()), this, SLOT(aboutToShow()));
+// QString title = parent.data().toString();
+// menu = new QMenu(title, this);
+// QIcon icon = qvariant_cast<QIcon>(parent.data(Qt::DecorationRole));
+// menu->setIcon(icon);
+// parentMenu->addMenu(menu);
+// QVariant v;
+// v.setValue(parent);
+// menu->menuAction()->setData(v);
+// connect(menu, SIGNAL(aboutToShow()), this, SLOT(aboutToShow()));
return;
}
@@ -171,18 +177,18 @@ void ModelMenu::createMenu(const QModelIndex &parent, int max, QMenu *parentMenu
for (int i = 0; i < end; ++i)
{
QModelIndex idx = m_model->index(i, 0, parent);
- if (m_model->hasChildren(idx))
- {
- createMenu(idx, -1, menu);
- }
- else
- {
+// if (m_model->hasChildren(idx))
+// {
+// createMenu(idx, -1, menu);
+// }
+// else
+// {
if (m_separatorRole != 0
&& idx.data(m_separatorRole).toBool())
addSeparator();
else
menu->addAction(makeAction(idx));
- }
+// }
if (menu == this && i == m_firstSeparator - 1)
addSeparator();
}
diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp
index bbe89816..2cf65e1c 100644
--- a/src/networkmanager.cpp
+++ b/src/networkmanager.cpp
@@ -51,13 +51,9 @@
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QSslError>
-#if KDE_IS_VERSION(4,2,70)
-NetworkAccessManager::NetworkAccessManager(QObject *parent)
- : KIO::AccessManager(parent)
-#else
+
NetworkAccessManager::NetworkAccessManager(QObject *parent)
- : KNetworkAccessManager(parent)
-#endif
+ : AccessManager(parent)
{
connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*)));
@@ -101,7 +97,6 @@ void NetworkAccessManager::loadSettings()
}
-
void NetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *auth)
{
MainWindow *mainWindow = Application::instance()->mainWindow();
diff --git a/src/networkmanager.h b/src/networkmanager.h
index 681d296a..62c01e99 100644
--- a/src/networkmanager.h
+++ b/src/networkmanager.h
@@ -19,18 +19,17 @@
* ============================================================ */
-#ifndef NETWORKACCESSMANAGER_H
-#define NETWORKACCESSMANAGER_H
+#ifndef NETWORKMANAGER_H
+#define NETWORKMANAGER_H
// KDE Includes
#include <KIO/AccessManager>
// Forward Declarations
-class QNetworkRequest;
-class QIODevice;
+using namespace KIO;
-class NetworkAccessManager : public KIO::AccessManager
+class NetworkAccessManager : public AccessManager
{
Q_OBJECT
@@ -50,4 +49,4 @@ private slots:
};
-#endif // NETWORKACCESSMANAGER_H
+#endif // NETWORKMANAGER_H
diff --git a/src/rekonqui.rc b/src/rekonqui.rc
index aa372538..67b07c1c 100644
--- a/src/rekonqui.rc
+++ b/src/rekonqui.rc
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!DOCTYPE gui SYSTEM "kpartgui.dtd">
-<gui name="rekonq" version="40">
+<gui name="rekonq" version="41">
<MenuBar>
@@ -36,7 +36,7 @@
<!-- ============ VIEW menu =========== -->
<Menu name="view" noMerge="1"><text>&amp;View</text>
- <Action name="stop_reload" />
+ <Action name="view_redisplay" />
<Action name="go_home" />
<Separator/>
<Action name="bigger_font" />
@@ -67,12 +67,8 @@
<!-- ============ SETTINGS menu =========== -->
<Menu name="settings" noMerge="1"><text>&amp;Settings</text>
<Action name="options_show_menubar" />
- <Action name="options_show_statusbar" />
<Merge name="StandardToolBarMenuHandler" />
<Merge/>
- <Menu name="side_panels"><text>Side &amp;Panels</text>
- <Action name="show_history_panel" />
- </Menu>
<Separator/>
<Action name="fullscreen" />
<Separator/>
@@ -88,11 +84,12 @@
<text>Main Toolbar</text>
<Action name="history_back" />
<Action name="history_forward" />
+ <Separator />
<Action name="stop_reload" />
<Action name="go_home" />
- <Action name="new_tab" />
<Action name="url_bar" />
- <Action name="search_bar" />
+ <Action name="add_bookmark" />
+ <Action name="options_configure" />
</ToolBar>
<!-- ============ Bookmarks ToolBar =========== -->
diff --git a/src/tabbar.cpp b/src/tabbar.cpp
index 96e3d19c..2680dfb7 100644
--- a/src/tabbar.cpp
+++ b/src/tabbar.cpp
@@ -70,25 +70,8 @@ TabBar::~TabBar()
QSize TabBar::tabSizeHint(int index) const
{
QSize s = m_parent->sizeHint();
- int w;
- int n = count();
-
- if (n > 6)
- {
- w = s.width() / 5;
- }
- else
- {
- if (n > 3)
- {
- w = s.width() / 4;
- }
- else
- {
- w = s.width() / 3;
- }
- }
+ int w = s.width() / 4;
int h = KTabBar::tabSizeHint(index).height();
QSize ts = QSize(w, h);
diff --git a/src/webpage.cpp b/src/webpage.cpp
index d26b54aa..8c6c0d2a 100644
--- a/src/webpage.cpp
+++ b/src/webpage.cpp
@@ -42,6 +42,10 @@
#include <KDebug>
#include <KToolInvocation>
+#include <KDE/KParts/BrowserRun>
+#include <KDE/KMimeTypeTrader>
+#include <KDE/KRun>
+
#include <kdewebkit/kwebpage.h>
#include <kdewebkit/kwebview.h>
@@ -123,16 +127,39 @@ KWebPage *WebPage::createWindow(QWebPage::WebWindowType type)
// FIXME: implement here (perhaps) mimetype discerning && file loading (KToolInvocation??)
-// void WebPage::slotHandleUnsupportedContent(QNetworkReply *reply)
-// {
-//
-// if (reply->error() == QNetworkReply::NoError)
-// {
-// return slotDownloadRequested(reply->request(), reply);
-// }
-//
-// viewErrorPage(reply);
-// }
+void WebPage::slotHandleUnsupportedContent(QNetworkReply *reply)
+{
+
+ const KUrl url(reply->request().url());
+ kDebug() << "title:" << url;
+ kDebug() << "error:" << reply->errorString();
+
+ QString filename = url.fileName();
+ QString mimetype = reply->header(QNetworkRequest::ContentTypeHeader).toString();
+ KService::Ptr offer = KMimeTypeTrader::self()->preferredService(mimetype);
+
+ KParts::BrowserRun::AskSaveResult res = KParts::BrowserRun::askSave(
+ url,
+ offer,
+ mimetype,
+ filename
+ );
+ switch (res)
+ {
+ case KParts::BrowserRun::Save:
+ slotDownloadRequested(reply->request(), reply);
+ return;
+ case KParts::BrowserRun::Cancel:
+ return;
+ default: // non existant case
+ break;
+ }
+
+ KUrl::List list;
+ list.append(url);
+ KRun::run(*offer,url,0);
+ return;
+}
void WebPage::manageNetworkErrors(QNetworkReply* reply)
diff --git a/src/webpage.h b/src/webpage.h
index 0723cb6d..8fe9517d 100644
--- a/src/webpage.h
+++ b/src/webpage.h
@@ -3,9 +3,7 @@
* This file is a part of the rekonq project
*
* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved
-* Copyright (C) 2008 Benjamin C. Meyer <ben@meyerhome.net>
* Copyright (C) 2008-2009 by Andrea Diamantini <adjam7 at gmail dot com>
-* Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com>
*
*
* This program is free software; you can redistribute it
@@ -24,6 +22,7 @@
#ifndef WEBPAGE_H
#define WEBPAGE_H
+
// KDE Includes
#include <KUrl>
@@ -34,19 +33,9 @@
#include <QWebPage>
// Forward Declarations
-class MainWindow;
-class Application;
-
-class KActionCollection;
-
class QWebFrame;
-class QAuthenticator;
-class QMouseEvent;
-class QNetworkProxy;
class QNetworkReply;
-class WebView;
-
class WebPage : public KWebPage
{
@@ -65,8 +54,9 @@ protected:
KWebPage *createWindow(QWebPage::WebWindowType type);
-// protected Q_SLOTS:
-// virtual void slotHandleUnsupportedContent(QNetworkReply *reply);
+
+protected Q_SLOTS:
+ virtual void slotHandleUnsupportedContent(QNetworkReply *reply);
private:
void viewErrorPage(QNetworkReply *);
diff --git a/src/webview.h b/src/webview.h
index b5ffa887..389db154 100644
--- a/src/webview.h
+++ b/src/webview.h
@@ -35,16 +35,8 @@
#include <QWebView>
// Forward Declarations
-class MainWindow;
-class Application;
-class KActionCollection;
-class QWebFrame;
-class QAuthenticator;
-class QMouseEvent;
-class QNetworkProxy;
-class QNetworkReply;
class WebPage;