summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/mainview.cpp5
-rw-r--r--src/mainwindow.cpp85
-rw-r--r--src/mainwindow.h12
-rw-r--r--src/zoombar.cpp168
-rw-r--r--src/zoombar.h75
6 files changed, 257 insertions, 89 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9d691d36..46e9240c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -11,6 +11,7 @@ SET( rekonq_KDEINIT_SRCS
clicktoflash.cpp
filterurljob.cpp
findbar.cpp
+ zoombar.cpp
mainview.cpp
mainwindow.cpp
networkaccessmanager.cpp
diff --git a/src/mainview.cpp b/src/mainview.cpp
index 335bcfae..cf0565f0 100644
--- a/src/mainview.cpp
+++ b/src/mainview.cpp
@@ -293,10 +293,6 @@ void MainView::currentChanged(int index)
else
emit browserTabLoading(true);
- // update zoom slider
- if (!Application::instance()->mainWindowList().isEmpty())
- Application::instance()->mainWindow()->setZoomSliderFactor(tab->view()->zoomFactor());
-
// set focus to the current webview
if (tab->url().scheme() == QL1S("about"))
_widgetBar->currentWidget()->setFocus();
@@ -329,7 +325,6 @@ WebTab *MainView::newWebTab(bool focused)
connect(tab->view(), SIGNAL(iconChanged()), this, SLOT(webViewIconChanged()));
connect(tab->view(), SIGNAL(titleChanged(const QString &)), this, SLOT(webViewTitleChanged(const QString &)));
connect(tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(webViewUrlChanged(const QUrl &)));
- connect(tab->view(), SIGNAL(zoomChanged(qreal)), m_parentWindow, SLOT(setZoomSliderFactor(qreal)));
// connecting webPage signals with mainview
connect(tab->view()->page(), SIGNAL(windowCloseRequested()), this, SLOT(windowCloseRequested()));
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 9207f6ec..01dd2ad2 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -41,6 +41,7 @@
#include "webtab.h"
#include "mainview.h"
#include "findbar.h"
+#include "zoombar.h"
#include "historypanel.h"
#include "bookmarkspanel.h"
#include "webinspectorpanel.h"
@@ -97,6 +98,7 @@ MainWindow::MainWindow()
: KXmlGuiWindow()
, m_view(new MainView(this))
, m_findBar(new FindBar(this))
+ , m_zoomBar(new ZoomBar(this))
, m_historyPanel(0)
, m_bookmarksPanel(0)
, m_webInspectorPanel(0)
@@ -116,6 +118,7 @@ MainWindow::MainWindow()
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(m_view);
layout->addWidget(m_findBar);
+ layout->addWidget(m_zoomBar);
centralWidget->setLayout(layout);
// central widget
@@ -163,6 +166,7 @@ MainWindow::~MainWindow()
delete m_view;
delete m_findBar;
+ delete m_zoomBar;
delete m_historyPanel;
delete m_bookmarksPanel;
@@ -173,8 +177,6 @@ MainWindow::~MainWindow()
delete m_encodingMenu;
delete m_bookmarksBar;
-
- delete m_zoomSlider;
delete m_popup;
delete m_hidePopup;
@@ -251,6 +253,9 @@ void MainWindow::postLaunch()
// Find Bar signal
connect(m_findBar, SIGNAL(searchString(const QString &)), this, SLOT(find(const QString &)));
+ // Zoom Bar signal
+ connect(m_view, SIGNAL(currentChanged(int)), m_zoomBar, SLOT(updateSlider(int)));
+
// setting up toolbars to NOT have context menu enabled
setContextMenuPolicy(Qt::DefaultContextMenu);
@@ -330,12 +335,8 @@ void MainWindow::setupActions()
actionCollection()->addAction(QL1S("open_location"), a);
connect(a, SIGNAL(triggered(bool)) , this, SLOT(openLocation()));
-
- // ============================= Zoom Actions ===================================
- actionCollection()->addAction(KStandardAction::ZoomIn, this, SLOT(zoomIn()));
- a = actionCollection()->addAction(KStandardAction::ActualSize, this, SLOT(zoomNormal()));
- a->setShortcut(KShortcut(Qt::CTRL | Qt::Key_0));
- actionCollection()->addAction(KStandardAction::ZoomOut, this, SLOT(zoomOut()));
+ // set zoom bar actions
+ m_zoomBar->setupActions(this);
// =============================== Tools Actions =================================
a = new KAction(i18n("Page S&ource"), this);
@@ -455,39 +456,7 @@ void MainWindow::setupTools()
toolsMenu->addAction(actionByName(KStandardAction::name(KStandardAction::Print)));
toolsMenu->addAction(actionByName(KStandardAction::name(KStandardAction::Find)));
- // setup zoom widget
- QWidget *zoomWidget = new QWidget(this);
-
- QToolButton *zoomOut = new QToolButton(zoomWidget);
- zoomOut->setDefaultAction(actionByName(KStandardAction::name(KStandardAction::ZoomOut)));
- zoomOut->setAutoRaise(true);
-
- m_zoomSlider = new QSlider(Qt::Horizontal, zoomWidget);
- m_zoomSlider->setTracking(true);
- m_zoomSlider->setRange(1, 19); // divide by 10 to obtain a qreal for zoomFactor()
- m_zoomSlider->setValue(10);
- m_zoomSlider->setPageStep(3);
- connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setZoomFactor(int)));
-
- QToolButton *zoomIn = new QToolButton(zoomWidget);
- zoomIn->setDefaultAction(actionByName(KStandardAction::name(KStandardAction::ZoomIn)));
- zoomIn->setAutoRaise(true);
-
- QToolButton *zoomNormal = new QToolButton(zoomWidget);
- zoomNormal->setDefaultAction(actionByName(KStandardAction::name(KStandardAction::ActualSize)));
- zoomNormal->setAutoRaise(true);
-
- QHBoxLayout* zoomWidgetLayout = new QHBoxLayout(zoomWidget);
- zoomWidgetLayout->setSpacing(0);
- zoomWidgetLayout->setMargin(0);
- zoomWidgetLayout->addWidget(zoomOut);
- zoomWidgetLayout->addWidget(m_zoomSlider);
- zoomWidgetLayout->addWidget(zoomIn);
- zoomWidgetLayout->addWidget(zoomNormal);
-
- QWidgetAction *zoomAction = new QWidgetAction(this);
- zoomAction->setDefaultWidget(zoomWidget);
- toolsMenu->addAction(zoomAction);
+ toolsMenu->addAction(actionByName(KStandardAction::name(KStandardAction::Zoom)));
toolsMenu->addAction(actionByName(QL1S("encodings")));
@@ -844,38 +813,6 @@ void MainWindow::highlightAll()
}
-void MainWindow::zoomIn()
-{
- m_zoomSlider->setValue(m_zoomSlider->value() + 1);
-}
-
-
-void MainWindow::zoomNormal()
-{
- m_zoomSlider->setValue(10);
-}
-
-
-void MainWindow::zoomOut()
-{
- m_zoomSlider->setValue(m_zoomSlider->value() - 1);
-}
-
-
-void MainWindow::setZoomFactor(int factor)
-{
- if (!currentTab())
- return;
- currentTab()->view()->setZoomFactor(QVariant(factor).toReal() / 10);
-}
-
-
-void MainWindow::setZoomSliderFactor(qreal factor)
-{
- m_zoomSlider->setValue(factor * 10);
-}
-
-
void MainWindow::viewFullScreen(bool makeFullScreen)
{
setWidgetsVisible(!makeFullScreen);
@@ -1397,4 +1334,4 @@ bool MainWindow::queryClose()
}
}
return true;
-}
+} \ No newline at end of file
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 96fe0f2d..e5a43649 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -45,6 +45,7 @@
// Forward Declarations
class FindBar;
+class ZoomBar;
class HistoryPanel;
class BookmarksPanel;
class WebInspectorPanel;
@@ -102,8 +103,6 @@ public slots:
void updateActions();
- void setZoomSliderFactor(qreal factor);
-
signals:
// switching tabs
void ctrlTabPressed();
@@ -135,12 +134,6 @@ private slots:
void findPrevious();
void highlightAll();
- // Zoom slots
- void zoomIn();
- void zoomNormal();
- void zoomOut();
- void setZoomFactor(int factor);
-
// File Menu slots
void openLocation();
void fileOpen();
@@ -170,6 +163,7 @@ private slots:
private:
MainView *m_view;
FindBar *m_findBar;
+ ZoomBar *m_zoomBar;
HistoryPanel *m_historyPanel;
BookmarksPanel *m_bookmarksPanel;
@@ -181,8 +175,6 @@ private:
KMenu *m_encodingMenu;
BookmarkToolBar *m_bookmarksBar;
-
- QSlider *m_zoomSlider;
QString m_lastSearch;
diff --git a/src/zoombar.cpp b/src/zoombar.cpp
new file mode 100644
index 00000000..28907ccc
--- /dev/null
+++ b/src/zoombar.cpp
@@ -0,0 +1,168 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2008-2010 by Andrea Diamantini <adjam7 at gmail dot com>
+* Copyright (C) 2009-2010 by Lionel Chauvin <megabigbug@yahoo.fr>
+*
+*
+* 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/>.
+*
+* ============================================================ */
+
+
+// Self Includes
+#include "zoombar.h"
+#include "zoombar.moc"
+
+// local includes
+#include "mainview.h"
+
+// KDE Includes
+#include <KLineEdit>
+#include <KIcon>
+#include <klocalizedstring.h>
+#include <KApplication>
+#include <KStandardAction>
+#include <KAction>
+
+// Qt Includes
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QLabel>
+#include <QtCore/QString>
+
+
+ZoomBar::ZoomBar(QWidget *parent)
+ : QWidget(parent)
+ ,m_zoomIn(new QToolButton(this))
+ ,m_zoomOut(new QToolButton(this))
+ ,m_zoomNormal(new QToolButton(this))
+ ,m_zoomSlider(new QSlider(Qt::Horizontal, this))
+{
+ QHBoxLayout *layout = new QHBoxLayout;
+
+ // cosmetic
+ layout->setContentsMargins(2, 0, 2, 0);
+
+ QToolButton *hideButton = new QToolButton(this);
+ hideButton->setAutoRaise(true);
+ hideButton->setIcon(KIcon("dialog-close"));
+ connect(hideButton, SIGNAL(clicked()), this, SLOT(hide()));
+
+ layout->addWidget(hideButton);
+ layout->setAlignment(hideButton, Qt::AlignLeft | Qt::AlignTop);
+
+ // label
+ QLabel *label = new QLabel(i18n("Zoom:"));
+ layout->addWidget(label);
+
+ m_zoomSlider->setTracking(true);
+ m_zoomSlider->setRange(1, 19); // divide by 10 to obtain a qreal for zoomFactor()
+ m_zoomSlider->setValue(10);
+ m_zoomSlider->setPageStep(3);
+ connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
+
+ m_zoomIn->setAutoRaise(true);
+ m_zoomOut->setAutoRaise(true);
+ m_zoomNormal->setAutoRaise(true);
+
+ layout->setSpacing(0);
+ layout->setMargin(0);
+ layout->addWidget(m_zoomOut);
+ layout->addWidget(m_zoomSlider);
+ layout->addWidget(m_zoomIn);
+ layout->addWidget(m_zoomNormal);
+
+ setLayout(layout);
+
+ // we start off hidden
+ hide();
+}
+
+
+void ZoomBar::setupActions(MainWindow *window)
+{
+ KAction *a;
+ a = window->actionCollection()->addAction(KStandardAction::ZoomIn, this, SLOT(zoomIn()));
+ a = window->actionCollection()->addAction(KStandardAction::ZoomOut, this, SLOT(zoomOut()));
+ a = window->actionCollection()->addAction(KStandardAction::ActualSize, this, SLOT(zoomNormal()));
+ a->setShortcut(KShortcut(Qt::CTRL | Qt::Key_0));
+ a = window->actionCollection()->addAction(KStandardAction::Zoom, this, SLOT(show()));
+ a->setIcon(KIcon("page-zoom"));
+ a->setShortcut(KShortcut(Qt::CTRL | Qt::Key_Y));
+
+ m_zoomIn->setDefaultAction(window->actionByName(KStandardAction::name(KStandardAction::ZoomIn)));
+ m_zoomOut->setDefaultAction(window->actionByName(KStandardAction::name(KStandardAction::ZoomOut)));
+ m_zoomNormal->setDefaultAction(window->actionByName(KStandardAction::name(KStandardAction::ActualSize)));
+}
+
+
+ZoomBar::~ZoomBar()
+{
+ delete m_zoomIn;
+ delete m_zoomOut;
+ delete m_zoomNormal;
+ delete m_zoomSlider;
+}
+
+
+void ZoomBar::show()
+{
+ // show findbar if not visible
+ if (isHidden())
+ {
+ QWidget::show();
+ }
+}
+
+
+void ZoomBar::zoomIn()
+{
+ setValue(m_zoomSlider->value() + 1);
+}
+
+
+void ZoomBar::zoomOut()
+{
+ setValue(m_zoomSlider->value() - 1);
+}
+
+
+void ZoomBar::zoomNormal()
+{
+ setValue(10);
+}
+
+
+void ZoomBar::updateSlider(int webview)
+{
+ WebTab *tab = 0;
+ if (!Application::instance()->mainWindowList().isEmpty())
+ tab = Application::instance()->mainWindow()->mainView()->webTab(webview);
+
+ if (!tab)
+ return;
+
+ m_zoomSlider->setValue(tab->view()->zoomFactor() * 10);
+}
+
+
+void ZoomBar::setValue(int value)
+{
+ m_zoomSlider->setValue(value);
+ Application::instance()->mainWindow()->currentTab()->view()->setZoomFactor(QVariant(value).toReal() / 10);
+}
diff --git a/src/zoombar.h b/src/zoombar.h
new file mode 100644
index 00000000..178ed464
--- /dev/null
+++ b/src/zoombar.h
@@ -0,0 +1,75 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2008-2010 by Andrea Diamantini <adjam7 at gmail dot com>
+* Copyright (C) 2009-2010 by Lionel Chauvin <megabigbug@yahoo.fr>
+*
+*
+* 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 ZOOMBAR_H
+#define ZOOMBAR_H
+
+
+// Rekonq Includes
+#include "rekonq_defines.h"
+
+// Local Includes
+#include "mainwindow.h"
+
+// KDE Includes
+#include <KLineEdit>
+
+// Qt Includes
+#include <QtGui/QWidget>
+#include <QtGui/QCheckBox>
+#include <QtGui/QSlider>
+#include <QtGui/QToolButton>
+
+// Forward Declarations
+class QString;
+
+
+class REKONQ_TESTS_EXPORT ZoomBar : public QWidget
+{
+ Q_OBJECT
+
+public:
+ ZoomBar(QWidget *parent);
+ ~ZoomBar();
+
+public slots:
+ void show();
+ void zoomIn();
+ void zoomOut();
+ void zoomNormal();
+ void setupActions(MainWindow *window);
+ void updateSlider(int webview);
+ void setValue(int value);
+
+private:
+ QToolButton *m_zoomIn;
+ QToolButton *m_zoomOut;
+ QToolButton *m_zoomNormal;
+ QSlider *m_zoomSlider;
+};
+
+#endif