summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/application.cpp3
-rw-r--r--src/bookmarks/bookmarkcontextmenu.cpp10
-rw-r--r--src/bookmarks/bookmarkspanel.cpp5
-rw-r--r--src/bookmarks/bookmarkstreemodel.cpp4
-rw-r--r--src/data/rekonq.desktop2
-rw-r--r--src/findbar.cpp14
-rw-r--r--src/findbar.h5
-rw-r--r--src/mainview.cpp13
-rw-r--r--src/mainview.h7
-rw-r--r--src/mainwindow.cpp95
-rw-r--r--src/mainwindow.h12
-rw-r--r--src/newtabpage.cpp134
-rw-r--r--src/newtabpage.h5
-rw-r--r--src/urlbar/completionwidget.cpp69
-rw-r--r--src/urlbar/completionwidget.h6
-rw-r--r--src/urlbar/urlbar.cpp18
-rw-r--r--src/webview.cpp2
-rw-r--r--src/webview.h2
-rw-r--r--src/zoombar.cpp181
-rw-r--r--src/zoombar.h78
22 files changed, 443 insertions, 225 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c25b8234..8de22b5b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,7 @@ PROJECT( rekonq )
# Informations to update before to release this package.
# rekonq info
-SET(REKONQ_VERSION "0.5.53" )
+SET(REKONQ_VERSION "0.5.54" )
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h )
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/application.cpp b/src/application.cpp
index 71693a7a..8a24014d 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -224,7 +224,8 @@ int Application::newInstance()
if(isFirstLoad)
{
- QTimer::singleShot(0, this, SLOT(postLaunch()));
+ // give me some time to do the other things..
+ QTimer::singleShot(100, this, SLOT(postLaunch()));
}
return exitValue;
diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp
index e731d982..96668003 100644
--- a/src/bookmarks/bookmarkcontextmenu.cpp
+++ b/src/bookmarks/bookmarkcontextmenu.cpp
@@ -214,7 +214,7 @@ void BookmarkContextMenu::deleteBookmark()
KBookmark bm = bookmark();
KBookmarkGroup bmg = bm.parentGroup();
bool folder = bm.isGroup();
- QString name = QString(bm.text()).replace("&&", "&");
+ QString name = QString(bm.fullText()).replace("&&", "&");
if (KMessageBox::warningContinueCancel(
QApplication::activeWindow(),
@@ -237,10 +237,10 @@ void BookmarkContextMenu::deleteBookmark()
void BookmarkContextMenu::editBookmark()
{
KBookmark selected = bookmark();
- selected.setFullText(selected.text().replace("&&", "&"));
+ selected.setFullText(selected.fullText().replace("&&", "&"));
KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow());
dialog->editBookmark(selected);
- selected.setFullText(selected.text().replace('&', "&&"));
+ selected.setFullText(selected.fullText().replace('&', "&&"));
delete dialog;
}
@@ -322,13 +322,13 @@ void BookmarkContextMenu::bookmarkCurrentPage()
if (selected.isGroup())
parent = selected.toGroup();
- KBookmark newBk = parent.addBookmark(owner()->currentTitle().replace('&', "&&"), KUrl(owner()->currentUrl()), "text-html");
+ KBookmark newBk = parent.addBookmark(owner()->currentTitle().replace('&', "&&"), KUrl(owner()->currentUrl()));
parent.moveBookmark(newBk, selected.parentGroup().previous(selected));
}
else
{
- parent.addBookmark(owner()->currentTitle(), KUrl(owner()->currentUrl()), "text-html");
+ parent.addBookmark(owner()->currentTitle(), KUrl(owner()->currentUrl()));
}
manager()->emitChanged(parent);
diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp
index 5e11601a..75d8faf3 100644
--- a/src/bookmarks/bookmarkspanel.cpp
+++ b/src/bookmarks/bookmarkspanel.cpp
@@ -220,11 +220,12 @@ void BookmarksPanel::deleteBookmark()
KBookmark bm = bookmarkForIndex(index);
KBookmarkGroup bmg = bm.parentGroup();
bool folder = bm.isGroup();
+ QString name = QString(bm.fullText()).replace("&&", "&");
if (KMessageBox::warningContinueCancel(
QApplication::activeWindow(),
- folder ? i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", bm.text())
- : i18n("Are you sure you wish to remove the bookmark\n\"%1\"?", bm.text()),
+ folder ? i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", name)
+ : i18n("Are you sure you wish to remove the bookmark\n\"%1\"?", name),
folder ? i18n("Bookmark Folder Deletion")
: i18n("Bookmark Deletion"),
KStandardGuiItem::del(),
diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp
index b58b66e9..7063bf9b 100644
--- a/src/bookmarks/bookmarkstreemodel.cpp
+++ b/src/bookmarks/bookmarkstreemodel.cpp
@@ -69,9 +69,9 @@ QVariant BtmItem::data(int role) const
{
QString tooltip = "";
- if (!m_kbm.text().isEmpty())
+ if (!m_kbm.fullText().isEmpty())
{
- tooltip += m_kbm.text();
+ tooltip += m_kbm.fullText();
}
if (m_kbm.isGroup())
{
diff --git a/src/data/rekonq.desktop b/src/data/rekonq.desktop
index 64ab8421..a29d37e5 100644
--- a/src/data/rekonq.desktop
+++ b/src/data/rekonq.desktop
@@ -30,6 +30,8 @@ Name[zh_CN]=rekonq
Name[zh_TW]=rekonq
GenericName=Web Browser
GenericName[da]=Webbrowser
+GenericName[de]=Webbrowser
+GenericName[en_GB]=Web Browser
GenericName[es]=Navegador web
GenericName[fr]=Navigateur web
GenericName[pt]=Navegador Web
diff --git a/src/findbar.cpp b/src/findbar.cpp
index 10b63186..495e4f96 100644
--- a/src/findbar.cpp
+++ b/src/findbar.cpp
@@ -75,6 +75,7 @@ FindBar::FindBar(QWidget *parent)
// hide timer
connect(m_hideTimer, SIGNAL(timeout()), this, SLOT(hide()));
+ m_hideTimer->setSingleShot(true);
// label
QLabel *label = new QLabel(i18n("Find:"));
@@ -185,3 +186,16 @@ void FindBar::hide()
QWidget::hide();
emit(searchString(m_lineEdit->text()));
}
+
+
+void FindBar::setVisible(bool visible)
+{
+ emit visibilityChanged(visible);
+ QWidget::setVisible(visible);
+}
+
+
+void FindBar::toggleVisibility()
+{
+ setVisible(!isVisible());
+}
diff --git a/src/findbar.h b/src/findbar.h
index 83334b4f..63b2949b 100644
--- a/src/findbar.h
+++ b/src/findbar.h
@@ -58,9 +58,14 @@ public:
public slots:
void show();
void hide();
+ void toggleVisibility();
signals:
void searchString(const QString &);
+ void visibilityChanged(bool);
+
+protected:
+ void setVisible(bool visible);
private:
KLineEdit *m_lineEdit;
diff --git a/src/mainview.cpp b/src/mainview.cpp
index 335bcfae..dc759c9e 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()));
@@ -704,7 +699,7 @@ void MainView::resizeEvent(QResizeEvent *event)
}
-void MainView::detachTab(int index)
+void MainView::detachTab(int index, MainWindow *toWindow)
{
if (index < 0)
index = currentIndex();
@@ -725,7 +720,11 @@ void MainView::detachTab(int index)
UrlBar *bar = _widgetBar->urlBar(index);
closeTab(index, false);
- MainWindow *w = Application::instance()->newMainWindow(false);
+ MainWindow *w;
+ if( toWindow == NULL )
+ w = Application::instance()->newMainWindow(false);
+ else
+ w = toWindow;
w->mainView()->addTab(tab, Application::icon(u), label);
w->mainView()->widgetBar()->insertWidget(0, bar);
w->mainView()->updateTabBar();
diff --git a/src/mainview.h b/src/mainview.h
index 2ece6fe4..cc7eb8da 100644
--- a/src/mainview.h
+++ b/src/mainview.h
@@ -129,7 +129,12 @@ public slots:
void closeTab(int index = -1, bool del = true);
void closeOtherTabs(int index = -1);
void reloadTab(int index = -1);
- void detachTab(int index = -1);
+ /**
+ * Detaches tab at @c index to a new window.
+ * If @c toWindow is not null, the tab is instead
+ * added to existing MainWindow @c toWindow.
+ */
+ void detachTab(int index = -1, MainWindow *toWindow = NULL);
void reloadAllTabs();
void nextTab();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 9207f6ec..cbef274a 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
@@ -149,7 +152,8 @@ MainWindow::MainWindow()
// no more status bar..
setStatusBar(0);
- QTimer::singleShot(0, this, SLOT(postLaunch()));
+ // give me some time to do all the other stuffs...
+ QTimer::singleShot(100, this, SLOT(postLaunch()));
kDebug() << "MainWindow ctor...DONE";
}
@@ -163,6 +167,7 @@ MainWindow::~MainWindow()
delete m_view;
delete m_findBar;
+ delete m_zoomBar;
delete m_historyPanel;
delete m_bookmarksPanel;
@@ -173,8 +178,6 @@ MainWindow::~MainWindow()
delete m_encodingMenu;
delete m_bookmarksBar;
-
- delete m_zoomSlider;
delete m_popup;
delete m_hidePopup;
@@ -251,6 +254,11 @@ 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)));
+ // Ctrl + wheel handling
+ connect(this->currentTab()->view(), SIGNAL(zoomChanged(int)), m_zoomBar, SLOT(setValue(int)));
+
// setting up toolbars to NOT have context menu enabled
setContextMenuPolicy(Qt::DefaultContextMenu);
@@ -288,10 +296,12 @@ void MainWindow::setupActions()
KStandardAction::print(this, SLOT(printRequested()), actionCollection());
KStandardAction::quit(this , SLOT(close()), actionCollection());
- a = KStandardAction::find(m_findBar, SLOT(show()), actionCollection());
+ a = KStandardAction::find(m_findBar, SLOT(toggleVisibility()), actionCollection());
KShortcut findShortcut = KStandardShortcut::find();
findShortcut.setAlternate(Qt::Key_Slash);
a->setShortcut(findShortcut);
+ a->setCheckable(true);
+ connect(m_findBar, SIGNAL(visibilityChanged(bool)), a, SLOT(setChecked(bool)));
KStandardAction::findNext(this, SLOT(findNext()) , actionCollection());
KStandardAction::findPrev(this, SLOT(findPrevious()) , actionCollection());
@@ -330,12 +340,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 +461,10 @@ 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);
+ QAction *action = actionByName(KStandardAction::name(KStandardAction::Zoom));
+ action->setCheckable(true);
+ connect (m_zoomBar, SIGNAL(visibilityChanged(bool)), action, SLOT(setChecked(bool)));
+ toolsMenu->addAction(action);
toolsMenu->addAction(actionByName(QL1S("encodings")));
@@ -844,38 +821,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);
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/newtabpage.cpp b/src/newtabpage.cpp
index bbf6714e..78496bc2 100644
--- a/src/newtabpage.cpp
+++ b/src/newtabpage.cpp
@@ -44,7 +44,6 @@
// KDE Includes
#include <KStandardDirs>
-#include <KIconLoader>
#include <KConfig>
#include <KDialog>
#include <KCalendarSystem>
@@ -167,11 +166,10 @@ void NewTabPage::favoritesPage()
{
m_root.addClass("favorites");
- QWebElement add = markup(".link");
- add.findFirst("a").setAttribute("href", "about:preview/add");
- add.findFirst("img").setAttribute("src" , QString("file:///" +
- KIconLoader::global()->iconPath("list-add", KIconLoader::Small || KIconLoader::SizeSmall)));
- add.findFirst("span").appendInside(i18n("Add Preview"));
+ const QWebElement add = createLinkItem(i18n("Add Favorite"),
+ QLatin1String("about:preview/add"),
+ QLatin1String("list-add"),
+ KIconLoader::Toolbar);
m_root.document().findFirst("#actions").appendInside(add);
QStringList names = ReKonfig::previewNames();
@@ -180,7 +178,7 @@ void NewTabPage::favoritesPage()
if (urls.isEmpty())
{
m_root.addClass("empty");
- m_root.setPlainText(i18n("You can add a preview by clicking the \"Add Preview\" button in the top-right corner of this page"));
+ m_root.setPlainText(i18n("You can add a favorite by clicking the \"Add Favorite\" button in the top-right corner of this page"));
return;
}
@@ -338,55 +336,50 @@ void NewTabPage::removePreview(int index)
ReKonfig::self()->writeConfig();
}
-
void NewTabPage::browsingMenu(const KUrl &currentUrl)
{
QList<QWebElement> navItems;
- KIconLoader *loader = KIconLoader::global();
-
- QWebElement nav = markup(".link"); // Favorites
- nav.findFirst("a").setAttribute("href", "about:favorites");
- nav.findFirst("img").setAttribute("src" , QString("file:///" +
- loader->iconPath("emblem-favorite", KIconLoader::Desktop || KIconLoader::SizeSmall)));
- nav.findFirst("span").appendInside(i18n("Favorites"));
- navItems.append(nav);
-
- nav = markup(".link"); // Closed Tabs
- nav.findFirst("a").setAttribute("href", "about:closedTabs");
- nav.findFirst("img").setAttribute("src" , QString("file:///" +
- loader->iconPath("tab-close", KIconLoader::Desktop || KIconLoader::SizeSmall)));
- nav.findFirst("span").appendInside(i18n("Closed Tabs"));
- navItems.append(nav);
-
- nav = markup(".link"); // Bookmarks
- nav.findFirst("a").setAttribute("href", "about:bookmarks");
- nav.findFirst("img").setAttribute("src" , QString("file:///" +
- loader->iconPath("bookmarks", KIconLoader::Desktop || KIconLoader::SizeSmall)));
- nav.findFirst("span").appendInside(i18n("Bookmarks"));
- navItems.append(nav);
-
- nav = markup(".link"); // History
- nav.findFirst("a").setAttribute("href", "about:history");
- nav.findFirst("img").setAttribute("src" , QString("file:///" +
- loader->iconPath("view-history", KIconLoader::Desktop || KIconLoader::SizeSmall)));
- nav.findFirst("span").appendInside(i18n("History"));
- navItems.append(nav);
-
- nav = markup(".link"); // Downloads
- nav.findFirst("a").setAttribute("href", "about:downloads");
- nav.findFirst("img").setAttribute("src" , QString("file:///" +
- loader->iconPath("download", KIconLoader::Desktop || KIconLoader::SizeSmall)));
- nav.findFirst("span").appendInside(i18n("Downloads"));
- navItems.append(nav);
+ // Favorites
+ navItems.append(createLinkItem(i18n("Favorites"),
+ QLatin1String("about:favorites"),
+ QLatin1String("emblem-favorite"),
+ KIconLoader::Toolbar));
+
+ // Closed Tabs
+ navItems.append(createLinkItem(i18n("Closed Tabs"),
+ QLatin1String("about:closedTabs"),
+ QLatin1String("tab-close"),
+ KIconLoader::Toolbar));
+
+ // Bookmarks
+ navItems.append(createLinkItem(i18n("Bookmarks"),
+ QLatin1String("about:bookmarks"),
+ QLatin1String("bookmarks"),
+ KIconLoader::Toolbar));
+
+ // History
+ navItems.append(createLinkItem(i18n("History"),
+ QLatin1String("about:history"),
+ QLatin1String("view-history"),
+ KIconLoader::Toolbar));
+
+ // Downloads
+ navItems.append(createLinkItem(i18n("Downloads"),
+ QLatin1String("about:downloads"),
+ QLatin1String("download"),
+ KIconLoader::Toolbar));
foreach(QWebElement it, navItems)
{
- if (it.findFirst("a").attribute("href") == currentUrl.toMimeDataString())
- it.addClass("current");
- else if (currentUrl == "about:home" && it.findFirst("a").attribute("href") == "about:favorites")
- it.addClass("current");
- m_root.document().findFirst("#navigation").appendInside(it);
+ const QString aTagString('a');
+ const QString hrefAttributeString(QLatin1String("href"));
+
+ if (it.findFirst(aTagString).attribute(hrefAttributeString) == currentUrl.toMimeDataString())
+ it.addClass(QLatin1String("current"));
+ else if (currentUrl == QLatin1String("about:home") && it.findFirst(aTagString).attribute(hrefAttributeString) == QLatin1String("about:favorites"))
+ it.addClass(QLatin1String("current"));
+ m_root.document().findFirst(QLatin1String("#navigation")).appendInside(it);
}
}
@@ -395,11 +388,10 @@ void NewTabPage::historyPage()
{
m_root.addClass("history");
- QWebElement clearData = markup(".link");
- clearData.findFirst("a").setAttribute("href", "about:history/clear");
- QString iconPath = QString("file:///" + KIconLoader::global()->iconPath("edit-clear", KIconLoader::SizeSmall || KIconLoader::Small));
- clearData.findFirst("img").setAttribute("src" , iconPath);
- clearData.findFirst("span").appendInside(i18n("Clear Private Data"));
+ const QWebElement clearData = createLinkItem(i18n("Clear Private Data"),
+ QLatin1String("about:history/clear"),
+ QLatin1String("edit-clear"),
+ KIconLoader::Toolbar);
m_root.document().findFirst("#actions").appendInside(clearData);
HistoryTreeModel *model = Application::historyManager()->historyTreeModel();
@@ -441,11 +433,10 @@ void NewTabPage::bookmarksPage()
{
m_root.addClass("bookmarks");
- QWebElement editBookmarks = markup(".link");
- editBookmarks.findFirst("a").setAttribute("href", "about:bookmarks/edit");
- QString iconPath = QString("file:///" + KIconLoader::global()->iconPath("bookmarks-organize", KIconLoader::SizeSmall || KIconLoader::Small));
- editBookmarks.findFirst("img").setAttribute("src" , iconPath);
- editBookmarks.findFirst("span").appendInside(i18n("Edit Bookmarks"));
+ const QWebElement editBookmarks = createLinkItem(i18n("Edit Bookmarks"),
+ QLatin1String("about:bookmarks/edit"),
+ QLatin1String("bookmarks-organize"),
+ KIconLoader::Toolbar);
m_root.document().findFirst("#actions").appendInside(editBookmarks);
KBookmarkGroup bookGroup = Application::bookmarkProvider()->rootGroup();
@@ -472,7 +463,7 @@ void NewTabPage::createBookItem(const KBookmark &bookmark, QWebElement parent)
KBookmarkGroup group = bookmark.toGroup();
KBookmark bm = group.first();
parent.appendInside(markup("h3"));
- parent.lastChild().setPlainText(group.text());
+ parent.lastChild().setPlainText(group.fullText());
parent.appendInside(markup(".bookfolder"));
while (!bm.isNull())
{
@@ -488,7 +479,7 @@ void NewTabPage::createBookItem(const KBookmark &bookmark, QWebElement parent)
{
parent.appendInside(markup("a"));
parent.lastChild().setAttribute("href" , bookmark.url().prettyUrl());
- parent.lastChild().setPlainText(bookmark.text());
+ parent.lastChild().setPlainText(bookmark.fullText());
parent.appendInside("<br/>");
}
}
@@ -542,11 +533,10 @@ void NewTabPage::downloadsPage()
{
m_root.addClass("downloads");
- QWebElement clearData = markup(".link");
- clearData.findFirst("a").setAttribute("href", "about:downloads/clear");
- QString iconPath = QString("file:///" + KIconLoader::global()->iconPath("edit-clear", KIconLoader::SizeSmall || KIconLoader::Small));
- clearData.findFirst("img").setAttribute("src" , iconPath);
- clearData.findFirst("span").appendInside(i18n("Clear Private Data"));
+ const QWebElement clearData = createLinkItem(i18n("Clear Private Data"),
+ QLatin1String("about:downloads/clear"),
+ QLatin1String("edit-clear"),
+ KIconLoader::Toolbar);
m_root.document().findFirst("#actions").appendInside(clearData);
DownloadList list = Application::instance()->downloads();
@@ -595,3 +585,15 @@ void NewTabPage::downloadsPage()
div.lastChild().setPlainText(i18n("Open file"));
}
}
+
+QWebElement NewTabPage::createLinkItem(const QString &title, const QString &urlString, const QString &iconPath, int groupOrSize) const
+{
+ const KIconLoader * const loader = KIconLoader::global();
+
+ QWebElement nav = markup(QLatin1String(".link"));
+ nav.findFirst(QString('a')).setAttribute(QLatin1String("href"), urlString);
+ nav.findFirst(QLatin1String("img")).setAttribute(QLatin1String("src"),
+ QString::fromLatin1("file://") + loader->iconPath(iconPath, groupOrSize));
+ nav.findFirst(QLatin1String("span")).appendInside(title);
+ return nav;
+}
diff --git a/src/newtabpage.h b/src/newtabpage.h
index ad4941d3..2560beb2 100644
--- a/src/newtabpage.h
+++ b/src/newtabpage.h
@@ -33,6 +33,7 @@
#include "rekonq_defines.h"
// KDE Includes
+#include <KIconLoader>
#include <KUrl>
// Qt Includes
@@ -107,7 +108,7 @@ private:
* It works for all elements defined here.
*
*/
- inline QWebElement markup(const QString &selector)
+ inline QWebElement markup(const QString &selector) const
{
return m_root.document().findFirst("#models > " + selector).clone();
}
@@ -115,6 +116,8 @@ private:
QString checkTitle(const QString &title);
private:
+ QWebElement createLinkItem(const QString &title, const QString &urlString, const QString &iconPath, int groupOrSize) const;
+
QString m_html;
QWebElement m_root;
};
diff --git a/src/urlbar/completionwidget.cpp b/src/urlbar/completionwidget.cpp
index 62eb72a6..b77e2d7c 100644
--- a/src/urlbar/completionwidget.cpp
+++ b/src/urlbar/completionwidget.cpp
@@ -54,7 +54,7 @@
CompletionWidget::CompletionWidget(QWidget *parent)
: QFrame(parent, Qt::ToolTip)
, _parent(parent)
- , _currentIndex(-1)
+ , _currentIndex(0)
, _searchEngine(SearchEngine::defaultEngine())
{
setFrameStyle(QFrame::Panel);
@@ -107,6 +107,7 @@ void CompletionWidget::sizeAndPosition()
void CompletionWidget::popup()
{
+ findChild<ListItem *>(QString::number(0))->activate(); //activate first listitem
sizeAndPosition();
if (!isVisible())
show();
@@ -116,65 +117,47 @@ void CompletionWidget::popup()
void CompletionWidget::up()
{
// deactivate previous
- if (_currentIndex != -1)
- {
- ListItem *widget = findChild<ListItem *>(QString::number(_currentIndex));
- widget->deactivate();
- }
+ findChild<ListItem *>(QString::number(_currentIndex))->deactivate(); // deactivate previous
- if (_currentIndex >= 0)
+ if (_currentIndex > 0)
_currentIndex--;
else
_currentIndex = layout()->count() - 1;
- kDebug() << _currentIndex;
- kDebug() << _typedString;
- UrlBar *bar = qobject_cast<UrlBar *>(_parent);
- if(_currentIndex != -1)
- {
- // activate "new" current
- ListItem *widget = findChild<ListItem *>(QString::number(_currentIndex));
- widget->activate();
- bar->setQUrl( widget->url() );
- }
- else
- {
- bar->setText(_typedString);
- }
- bar->setFocus();
- bar->setCursorPosition( bar->text().length() );
+ activateCurrentListItem();
}
void CompletionWidget::down()
{
- // deactivate previous
- if (_currentIndex != -1)
- {
- ListItem *widget = findChild<ListItem *>(QString::number(_currentIndex));
- widget->deactivate();
- }
+ findChild<ListItem *>(QString::number(_currentIndex))->deactivate(); // deactivate previous
if (_currentIndex < _list.count() - 1)
_currentIndex++;
else
- _currentIndex = -1;
+ _currentIndex = 0;
+
+ activateCurrentListItem();
+}
+
-
+void CompletionWidget::activateCurrentListItem()
+{
kDebug() << _currentIndex;
kDebug() << _typedString;
UrlBar *bar = qobject_cast<UrlBar *>(_parent);
- if(_currentIndex != -1)
- {
- // activate "new" current
- ListItem *widget = findChild<ListItem *>(QString::number(_currentIndex));
- widget->activate();
+
+ // activate "new" current
+ ListItem *widget = findChild<ListItem *>(QString::number(_currentIndex));
+ widget->activate();
+
+ //update text of the url bar
+ bar->blockSignals(true); //without compute suggestions
+ if (!widget->inherits("SearchListItem"))
bar->setQUrl( widget->url() );
- }
else
- {
- bar->setText(_typedString);
- }
+ bar->setQUrl( _typedString );
+ bar->blockSignals(false);
bar->setFocus();
bar->setCursorPosition( bar->text().length() );
}
@@ -188,7 +171,7 @@ void CompletionWidget::clear()
delete child->widget();
delete child;
}
- _currentIndex = -1;
+ _currentIndex = 0;
}
@@ -309,10 +292,6 @@ void CompletionWidget::itemChosen(ListItem *item, Qt::MouseButton button, Qt::Ke
void CompletionWidget::suggestUrls(const QString &text)
{
- if(_currentIndex != -1)
- return;
-
- kDebug() << "suggesting...";
_typedString = text;
QWidget *w = qobject_cast<QWidget *>(parent());
diff --git a/src/urlbar/completionwidget.h b/src/urlbar/completionwidget.h
index fbca5b81..e14535f4 100644
--- a/src/urlbar/completionwidget.h
+++ b/src/urlbar/completionwidget.h
@@ -78,16 +78,12 @@ private:
void sizeAndPosition();
void up();
void down();
+ void activateCurrentListItem();
QWidget *_parent;
UrlSearchList _list;
- /**
- * The current index of the pointed out item
- *
- * -1 means no item, so the actual typed text is considered
- */
int _currentIndex;
KService::Ptr _searchEngine;
diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp
index 5c3cba28..d924a30d 100644
--- a/src/urlbar/urlbar.cpp
+++ b/src/urlbar/urlbar.cpp
@@ -185,9 +185,23 @@ void UrlBar::paintEvent(QPaintEvent *event)
}
else
{
- QColor loadingColor = Application::palette().color(QPalette::ToolTipBase);
+ QColor highlight = Application::palette().color(QPalette::Highlight);
- QLinearGradient gradient( QPoint(0, 0), QPoint(width(), height()) );
+ int r = (highlight.red()+2*backgroundColor.red())/3;
+ int g = (highlight.green()+2*backgroundColor.green())/3;
+ int b = (highlight.blue()+2*backgroundColor.blue())/3;
+
+ QColor loadingColor(r, g, b);
+
+ if (abs(loadingColor.lightness() - backgroundColor.lightness()) < 20) //eg. Gaia color scheme
+ {
+ r = (2*highlight.red()+backgroundColor.red())/3;
+ g = (2*highlight.green()+backgroundColor.green())/3;
+ b = (2*highlight.blue()+backgroundColor.blue())/3;
+ loadingColor = QColor(r, g, b);
+ }
+
+ QLinearGradient gradient( QPoint(0, 0), QPoint(width(), 0) );
gradient.setColorAt(0, loadingColor);
gradient.setColorAt(((double)progr) / 100 - .000001, loadingColor);
gradient.setColorAt(((double)progr) / 100, backgroundColor);
diff --git a/src/webview.cpp b/src/webview.cpp
index 7fcb3ecb..441225af 100644
--- a/src/webview.cpp
+++ b/src/webview.cpp
@@ -558,7 +558,7 @@ void WebView::wheelEvent(QWheelEvent *event)
if ((zoomFactor() * 10 - newFactor) > 0.5)
newFactor++;
- emit zoomChanged((qreal)newFactor / 10);
+ emit zoomChanged(newFactor);
}
else if ( ReKonfig::smoothScrolling() && !page()->currentFrame()->hitTestContent(event->pos()).isContentEditable())
{
diff --git a/src/webview.h b/src/webview.h
index b17940c7..b9c04e47 100644
--- a/src/webview.h
+++ b/src/webview.h
@@ -82,7 +82,7 @@ private slots:
signals:
void loadUrl(const KUrl &, const Rekonq::OpenType &);
- void zoomChanged(qreal);
+ void zoomChanged(int);
private:
QPoint _mousePos;
diff --git a/src/zoombar.cpp b/src/zoombar.cpp
new file mode 100644
index 00000000..485d71a9
--- /dev/null
+++ b/src/zoombar.cpp
@@ -0,0 +1,181 @@
+/* ============================================================
+*
+* 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 <KIcon>
+#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);
+
+ layout->addStretch();
+
+ 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(toggleVisibility()));
+ 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);
+ // Don't allox max +1 values
+ Application::instance()->mainWindow()->currentTab()->view()->setZoomFactor(QVariant(m_zoomSlider->value()).toReal() / 10);
+}
+
+
+void ZoomBar::setVisible(bool visible)
+{
+ emit visibilityChanged(visible);
+ QWidget::setVisible(visible);
+}
+
+
+void ZoomBar::toggleVisibility()
+{
+ setVisible(!isVisible());
+}
diff --git a/src/zoombar.h b/src/zoombar.h
new file mode 100644
index 00000000..8e8d9aba
--- /dev/null
+++ b/src/zoombar.h
@@ -0,0 +1,78 @@
+/* ============================================================
+*
+* 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"
+
+// Qt Includes
+#include <QtGui/QWidget>
+#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);
+ void toggleVisibility();
+
+signals:
+ void visibilityChanged(bool);
+
+protected:
+ void setVisible(bool visible);
+
+private:
+ QToolButton *m_zoomIn;
+ QToolButton *m_zoomOut;
+ QToolButton *m_zoomNormal;
+ QSlider *m_zoomSlider;
+};
+
+#endif