summaryrefslogtreecommitdiff
path: root/src/bookmarks
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks')
-rw-r--r--src/bookmarks/bookmarkowner.cpp49
-rw-r--r--src/bookmarks/bookmarkowner.h7
-rw-r--r--src/bookmarks/bookmarkprovider.cpp17
-rw-r--r--src/bookmarks/bookmarkprovider.h4
-rw-r--r--src/bookmarks/bookmarkscontextmenu.cpp48
-rw-r--r--src/bookmarks/bookmarkscontextmenu.h2
-rw-r--r--src/bookmarks/bookmarkstoolbar.cpp3
-rw-r--r--src/bookmarks/bookmarkstreemodel.cpp5
8 files changed, 73 insertions, 62 deletions
diff --git a/src/bookmarks/bookmarkowner.cpp b/src/bookmarks/bookmarkowner.cpp
index f1d4df1f..f9e64d68 100644
--- a/src/bookmarks/bookmarkowner.cpp
+++ b/src/bookmarks/bookmarkowner.cpp
@@ -43,6 +43,7 @@
#include <KBookmarkDialog>
#include <KLocalizedString>
#include <KMessageBox>
+#include "iconmanager.h"
// Qt Includes
#include <QtGui/QClipboard>
@@ -127,30 +128,36 @@ void BookmarkOwner::setCurrentBookmark(const KBookmark &bookmark)
}
+void BookmarkOwner::unsetCurrentBookmark()
+{
+ m_currentBookmark = KBookmark();
+}
+
+
void BookmarkOwner::openBookmark(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
emit openUrl(selected.url(), Rekonq::CurrentTab);
}
void BookmarkOwner::openBookmarkInNewTab(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
emit openUrl(selected.url(), Rekonq::NewTab);
}
void BookmarkOwner::openBookmarkInNewWindow(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
emit openUrl(selected.url(), Rekonq::NewWindow);
}
void BookmarkOwner::openBookmarkFolder(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
if (!selected.isGroup())
return;
@@ -173,9 +180,10 @@ void BookmarkOwner::openBookmarkFolder(const KBookmark &bookmark)
}
-void BookmarkOwner::bookmarkCurrentPage(const KBookmark &bookmark)
+KBookmark BookmarkOwner::bookmarkCurrentPage(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
+ KBookmark newBk;
KBookmarkGroup parent;
if (!selected.isNull())
@@ -185,22 +193,25 @@ void BookmarkOwner::bookmarkCurrentPage(const KBookmark &bookmark)
else
parent = selected.parentGroup();
- KBookmark newBk = parent.addBookmark(currentTitle().replace('&', "&&"), KUrl(currentUrl()));
+ newBk = parent.addBookmark(currentTitle().replace('&', "&&"), KUrl(currentUrl()),
+ Application::iconManager()->iconForUrl(currentUrl()).name());
parent.moveBookmark(newBk, selected);
}
else
{
parent = Application::bookmarkProvider()->rootGroup();
- parent.addBookmark(currentTitle(), KUrl(currentUrl()));
+ newBk = parent.addBookmark(currentTitle(), KUrl(currentUrl()));
}
m_manager->emitChanged(parent);
+ return newBk;
}
-void BookmarkOwner::newBookmarkFolder(const KBookmark &bookmark)
+KBookmarkGroup BookmarkOwner::newBookmarkFolder(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
+ KBookmarkGroup newBk;
KBookmarkDialog *dialog = bookmarkDialog(m_manager, QApplication::activeWindow());
QString folderName = i18n("New folder");
@@ -208,11 +219,11 @@ void BookmarkOwner::newBookmarkFolder(const KBookmark &bookmark)
{
if (selected.isGroup())
{
- dialog->createNewFolder(folderName, selected);
+ newBk = dialog->createNewFolder(folderName, selected);
}
else
{
- KBookmark newBk = dialog->createNewFolder(folderName, selected.parentGroup());
+ newBk = dialog->createNewFolder(folderName, selected.parentGroup());
if (!newBk.isNull())
{
KBookmarkGroup parent = newBk.parentGroup();
@@ -223,16 +234,17 @@ void BookmarkOwner::newBookmarkFolder(const KBookmark &bookmark)
}
else
{
- dialog->createNewFolder(folderName);
+ newBk = dialog->createNewFolder(folderName);
}
delete dialog;
+ return newBk;
}
-void BookmarkOwner::newSeparator(const KBookmark &bookmark)
+KBookmark BookmarkOwner::newSeparator(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
KBookmark newBk;
if (!selected.isNull())
@@ -255,12 +267,13 @@ void BookmarkOwner::newSeparator(const KBookmark &bookmark)
newBk.setIcon(("edit-clear"));
m_manager->emitChanged(newBk.parentGroup());
+ return newBk;
}
void BookmarkOwner::copyLink(const KBookmark &bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
if (selected.isNull())
return;
@@ -270,7 +283,7 @@ void BookmarkOwner::copyLink(const KBookmark &bookmark)
void BookmarkOwner::editBookmark(KBookmark bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
if (selected.isNull())
return;
@@ -286,7 +299,7 @@ void BookmarkOwner::editBookmark(KBookmark bookmark)
bool BookmarkOwner::deleteBookmark(KBookmark bookmark)
{
- KBookmark selected = bookmark.isNull() ? m_currentBookmark : bookmark;
+ KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark;
if (selected.isNull())
return false;
diff --git a/src/bookmarks/bookmarkowner.h b/src/bookmarks/bookmarkowner.h
index 795ccbf0..febff3b0 100644
--- a/src/bookmarks/bookmarkowner.h
+++ b/src/bookmarks/bookmarkowner.h
@@ -114,14 +114,15 @@ public:
public Q_SLOTS:
void setCurrentBookmark(const KBookmark &bookmark);
+ void unsetCurrentBookmark();
void openBookmark(const KBookmark &bookmark = KBookmark());
void openBookmarkInNewTab(const KBookmark &bookmark = KBookmark());
void openBookmarkInNewWindow(const KBookmark &bookmark = KBookmark());
void openBookmarkFolder(const KBookmark &bookmark = KBookmark());
- void bookmarkCurrentPage(const KBookmark &bookmark = KBookmark());
- void newBookmarkFolder(const KBookmark &bookmark = KBookmark());
- void newSeparator(const KBookmark &bookmark = KBookmark());
+ KBookmark bookmarkCurrentPage(const KBookmark &bookmark = KBookmark());
+ KBookmarkGroup newBookmarkFolder(const KBookmark &bookmark = KBookmark());
+ KBookmark newSeparator(const KBookmark &bookmark = KBookmark());
void copyLink(const KBookmark &bookmark = KBookmark());
void editBookmark(KBookmark bookmark = KBookmark());
bool deleteBookmark(KBookmark bookmark = KBookmark());
diff --git a/src/bookmarks/bookmarkprovider.cpp b/src/bookmarks/bookmarkprovider.cpp
index ccf60641..8089fb6d 100644
--- a/src/bookmarks/bookmarkprovider.cpp
+++ b/src/bookmarks/bookmarkprovider.cpp
@@ -36,11 +36,11 @@
#include "bookmarkspanel.h"
#include "bookmarkstoolbar.h"
#include "bookmarkowner.h"
+#include "iconmanager.h"
// KDE Includes
#include <KActionCollection>
#include <KStandardDirs>
-#include <KMimeType>
// Qt Includes
#include <QtCore/QFile>
@@ -80,14 +80,14 @@ BookmarkProvider::BookmarkProvider(QObject *parent)
m_manager = KBookmarkManager::managerForFile(bookfile.path(), "rekonq");
connect(m_manager, SIGNAL(changed(const QString &, const QString &)),
- this, SLOT(slotBookmarksChanged(const QString &, const QString &)));
+ this, SLOT(slotBookmarksChanged()));
// setup menu
m_owner = new BookmarkOwner(m_manager, this);
connect(m_owner, SIGNAL(openUrl(const KUrl&, const Rekonq::OpenType&)),
this, SIGNAL(openUrl(const KUrl&, const Rekonq::OpenType&)));
- KAction *a = KStandardAction::addBookmark(this, SLOT(slotAddBookmark()), this);
+ KAction *a = KStandardAction::addBookmark(bookmarkOwner(), SLOT(bookmarkCurrentPage()), this);
m_actionCollection->addAction(QL1S("rekonq_add_bookmark"), a);
kDebug() << "Loading Bookmarks Manager... DONE!";
@@ -196,7 +196,7 @@ KBookmark BookmarkProvider::bookmarkForUrl(const KUrl &url)
}
-void BookmarkProvider::slotBookmarksChanged(const QString& /*groupAddress*/, const QString& /*caller*/)
+void BookmarkProvider::slotBookmarksChanged()
{
foreach(BookmarkToolBar *bookmarkToolBar, m_bookmarkToolBars)
{
@@ -236,6 +236,7 @@ void BookmarkProvider::fillBookmarkBar(BookmarkToolBar *toolBar)
{
KBookmarkAction *action = new KBookmarkAction(bookmark, m_owner, this);
action->setIconText(action->iconText().replace('&', "&&"));
+ action->setIcon(Application::iconManager()->iconForUrl(bookmark.url()));
connect(action, SIGNAL(hovered()), toolBar, SLOT(actionHovered()));
toolBar->toolBar()->addAction(action);
toolBar->toolBar()->widgetForAction(action)->installEventFilter(toolBar);
@@ -244,14 +245,6 @@ void BookmarkProvider::fillBookmarkBar(BookmarkToolBar *toolBar)
}
-void BookmarkProvider::slotAddBookmark()
-{
- QString url = bookmarkOwner()->currentUrl();
- rootGroup().addBookmark(bookmarkOwner()->currentTitle(), url, KMimeType::favIconForUrl( KUrl(url) ) );
- bookmarkManager()->emitChanged();
-}
-
-
void BookmarkProvider::slotPanelChanged()
{
foreach (BookmarksPanel *panel, m_bookmarkPanels)
diff --git a/src/bookmarks/bookmarkprovider.h b/src/bookmarks/bookmarkprovider.h
index 6f2d8b8e..3f7a5c52 100644
--- a/src/bookmarks/bookmarkprovider.h
+++ b/src/bookmarks/bookmarkprovider.h
@@ -54,6 +54,7 @@ class KUrl;
class QAction;
class QPoint;
+
/**
* This class represent the interface to rekonq bookmarks system.
* All rekonq needs (Bookmarks Menu, Bookmarks Toolbar) is provided
@@ -123,11 +124,10 @@ public Q_SLOTS:
* @param caller caller that modified the bookmarks
* @see KBookmarkManager::changed
*/
- void slotBookmarksChanged(const QString &groupAddress, const QString &caller);
+ void slotBookmarksChanged();
void fillBookmarkBar(BookmarkToolBar *toolBar);
private Q_SLOTS:
- void slotAddBookmark();
void slotPanelChanged();
Q_SIGNALS:
diff --git a/src/bookmarks/bookmarkscontextmenu.cpp b/src/bookmarks/bookmarkscontextmenu.cpp
index da986fd2..8f1a570c 100644
--- a/src/bookmarks/bookmarkscontextmenu.cpp
+++ b/src/bookmarks/bookmarkscontextmenu.cpp
@@ -33,37 +33,37 @@
BookmarksContextMenu::BookmarksContextMenu(const KBookmark &bookmark, KBookmarkManager *manager, BookmarkOwner *owner, QWidget *parent)
: KBookmarkContextMenu(bookmark, manager, owner, parent)
- , bmOwner(owner)
+ , m_bmOwner(owner)
{
- bmOwner->setCurrentBookmark(bookmark);
+ m_bmOwner->setCurrentBookmark(bookmark);
}
BookmarksContextMenu::~BookmarksContextMenu()
{
+ m_bmOwner->unsetCurrentBookmark();
}
void BookmarksContextMenu::addBookmarkActions()
{
- addAction(bmOwner->action(BookmarkOwner::OPEN));
- addAction(bmOwner->action(BookmarkOwner::OPEN_IN_TAB));
- addAction(bmOwner->action(BookmarkOwner::OPEN_IN_WINDOW));
+ addAction(m_bmOwner->action(BookmarkOwner::OPEN_IN_TAB));
+ addAction(m_bmOwner->action(BookmarkOwner::OPEN_IN_WINDOW));
addSeparator();
- addAction(bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
- addAction(bmOwner->action(BookmarkOwner::NEW_FOLDER));
- addAction(bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
+ addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
addSeparator();
- addAction(bmOwner->action(BookmarkOwner::COPY));
+ addAction(m_bmOwner->action(BookmarkOwner::COPY));
addSeparator();
- addAction(bmOwner->action(BookmarkOwner::EDIT));
- addAction(bmOwner->action(BookmarkOwner::DELETE));
+ addAction(m_bmOwner->action(BookmarkOwner::EDIT));
+ addAction(m_bmOwner->action(BookmarkOwner::DELETE));
}
@@ -82,39 +82,39 @@ void BookmarksContextMenu::addFolderActions()
if (!child.isNull())
{
- addAction(bmOwner->action(BookmarkOwner::OPEN_FOLDER));
+ addAction(m_bmOwner->action(BookmarkOwner::OPEN_FOLDER));
addSeparator();
}
}
- addAction(bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
- addAction(bmOwner->action(BookmarkOwner::NEW_FOLDER));
- addAction(bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
+ addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
addSeparator();
- addAction(bmOwner->action(BookmarkOwner::EDIT));
- addAction(bmOwner->action(BookmarkOwner::DELETE));
+ addAction(m_bmOwner->action(BookmarkOwner::EDIT));
+ addAction(m_bmOwner->action(BookmarkOwner::DELETE));
}
void BookmarksContextMenu::addSeparatorActions()
{
- addAction(bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
- addAction(bmOwner->action(BookmarkOwner::NEW_FOLDER));
- addAction(bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
+ addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
addSeparator();
- addAction(bmOwner->action(BookmarkOwner::DELETE));
+ addAction(m_bmOwner->action(BookmarkOwner::DELETE));
}
void BookmarksContextMenu::addNullActions()
{
- addAction(bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
- addAction(bmOwner->action(BookmarkOwner::NEW_FOLDER));
- addAction(bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
+ addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER));
+ addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR));
}
diff --git a/src/bookmarks/bookmarkscontextmenu.h b/src/bookmarks/bookmarkscontextmenu.h
index a6691fdd..d669eef6 100644
--- a/src/bookmarks/bookmarkscontextmenu.h
+++ b/src/bookmarks/bookmarkscontextmenu.h
@@ -47,7 +47,7 @@ private:
void addSeparatorActions();
void addNullActions();
- BookmarkOwner *bmOwner;
+ BookmarkOwner *m_bmOwner;
};
#endif // BOOKMARKS_CONTEXT_MENU_H
diff --git a/src/bookmarks/bookmarkstoolbar.cpp b/src/bookmarks/bookmarkstoolbar.cpp
index ddb70a65..77bff7e6 100644
--- a/src/bookmarks/bookmarkstoolbar.cpp
+++ b/src/bookmarks/bookmarkstoolbar.cpp
@@ -30,6 +30,7 @@
#include "bookmarkstoolbar.moc"
// Local Includes
+#include "iconmanager.h"
#include "bookmarkscontextmenu.h"
#include "mainwindow.h"
#include "application.h"
@@ -66,7 +67,6 @@ BookmarkMenu::~BookmarkMenu()
KMenu * BookmarkMenu::contextMenu(QAction *act)
{
-
KBookmarkActionInterface* action = dynamic_cast<KBookmarkActionInterface *>(act);
if (!action)
return 0;
@@ -91,6 +91,7 @@ QAction * BookmarkMenu::actionForBookmark(const KBookmark &bookmark)
else
{
KBookmarkAction *action = new KBookmarkAction(bookmark, owner(), this);
+ action->setIcon(Application::iconManager()->iconForUrl(bookmark.url()));
connect(action, SIGNAL(hovered()), this, SLOT(actionHovered()));
return action;
}
diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp
index 7a1193e4..796208a9 100644
--- a/src/bookmarks/bookmarkstreemodel.cpp
+++ b/src/bookmarks/bookmarkstreemodel.cpp
@@ -70,7 +70,10 @@ QVariant BtmItem::data(int role) const
// return KIcon(m_kbm.icon());
// but I cannot let it work :(
// I really cannot understand how let this work properly...
- return Application::iconManager()->iconForUrl(KUrl(m_kbm.url()));
+ if (m_kbm.isGroup() || m_kbm.isSeparator())
+ return KIcon(m_kbm.icon());
+ else
+ return Application::iconManager()->iconForUrl(KUrl(m_kbm.url()));
}
if (role == Qt::UserRole)