Commit 880dae2e authored by Albert Astals Cid's avatar Albert Astals Cid
Browse files

Add a way to rename the current page bookmark from the menu

Comes with some api additions to bookmarkmanager
parent fc58c982
......@@ -225,6 +225,25 @@ KBookmark::List BookmarkManager::bookmarks( const KUrl& url ) const
return ret;
}
KBookmark::List BookmarkManager::bookmarks() const
{
return bookmarks( d->url );
}
KBookmark BookmarkManager::bookmark( int page ) const
{
const KBookmark::List bmarks = bookmarks();
foreach( const KBookmark &bm, bmarks )
{
DocumentViewport vp( bm.url().htmlRef() );
if ( vp.isValid() && vp.pageNumber == page )
{
return bm;
}
}
return KBookmark();
}
void BookmarkManager::save() const
{
d->manager->emitChanged();
......@@ -334,6 +353,18 @@ void BookmarkManager::removeBookmark( int n )
}
}
void BookmarkManager::renameBookmark( KBookmark* bm, const QString& newName)
{
KBookmarkGroup thebg;
QHash<KUrl, QString>::iterator it = d->bookmarkFind( d->url, false, &thebg );
Q_ASSERT ( it != d->knownFiles.end() );
if ( it == d->knownFiles.end() )
return;
bm->setFullText( newName );
d->manager->emitChanged( thebg );
}
int BookmarkManager::removeBookmark( const KUrl& referurl, const KBookmark& bm )
{
if ( !referurl.isValid() || bm.isNull() || bm.isGroup() || bm.isSeparator() )
......
......@@ -40,11 +40,24 @@ class OKULAR_EXPORT BookmarkManager : public QObject
* Returns the list of documents with bookmarks.
*/
KUrl::List files() const;
/**
* Returns the list of bookmarks for the specified @p url.
*/
KBookmark::List bookmarks( const KUrl& url ) const;
/**
* Returns the list of bookmarks for document
* @since 0.14 (KDE 4.8)
*/
KBookmark::List bookmarks() const;
/**
* Returns the bookmark for the given page of the document
* @since 0.14 (KDE 4.8)
*/
KBookmark bookmark( int page ) const;
/**
* Forces to save the list of bookmarks.
*/
......@@ -82,6 +95,12 @@ class OKULAR_EXPORT BookmarkManager : public QObject
*/
void removeBookmarks( const KUrl& referurl, const KBookmark::List& list );
/**
* Returns the bookmark given bookmark of the document
* @since 0.14 (KDE 4.8)
*/
void renameBookmark( KBookmark* bm, const QString& newName );
/**
* Returns whether the given @p page is bookmarked.
*/
......
......@@ -41,6 +41,7 @@
#include <kstandardaction.h>
#include <kpluginfactory.h>
#include <kfiledialog.h>
#include <kinputdialog.h>
#include <kmessagebox.h>
#include <knuminput.h>
#include <kio/netaccess.h>
......@@ -457,6 +458,12 @@ m_cliPresentation(false), m_embedMode(detectEmbedMode(parentWidget, parent, args
m_addBookmarkText = m_addBookmark->text();
m_addBookmarkIcon = m_addBookmark->icon();
m_renameBookmark = ac->addAction("rename_bookmark");
m_renameBookmark->setText(i18n( "Rename Bookmark" ));
m_renameBookmark->setIcon(KIcon( "edit-rename" ));
m_renameBookmark->setWhatsThis( i18n( "Rename the current page bookmark" ) );
connect( m_renameBookmark, SIGNAL(triggered()), this, SLOT(slotRenameBookmark()) );
m_prevBookmark = ac->addAction("previous_bookmark");
m_prevBookmark->setText(i18n( "Previous Bookmark" ));
m_prevBookmark->setIcon(KIcon( "go-up-search" ));
......@@ -1377,11 +1384,13 @@ void Part::updateBookmarksActions()
{
m_addBookmark->setText( i18n( "Remove Bookmark" ) );
m_addBookmark->setIcon( KIcon( "edit-delete-bookmark" ) );
m_renameBookmark->setEnabled( true );
}
else
{
m_addBookmark->setText( m_addBookmarkText );
m_addBookmark->setIcon( m_addBookmarkIcon );
m_renameBookmark->setEnabled( false );
}
}
else
......@@ -1389,6 +1398,7 @@ void Part::updateBookmarksActions()
m_addBookmark->setEnabled( false );
m_addBookmark->setText( m_addBookmarkText );
m_addBookmark->setIcon( m_addBookmarkIcon );
m_renameBookmark->setEnabled( false );
}
}
......@@ -1531,6 +1541,20 @@ void Part::slotAddBookmark()
}
}
void Part::slotRenameBookmark()
{
const uint current = m_document->currentPage();
Q_ASSERT(m_document->bookmarkManager()->isBookmarked( current ));
if ( m_document->bookmarkManager()->isBookmarked( current ) )
{
KBookmark bookmark = m_document->bookmarkManager()->bookmark( current );
const QString newName = KInputDialog::getText( i18n( "Rename Bookmark" ), i18n( "Enter the new name of the bookmark:" ), bookmark.fullText(), 0, widget());
if (!newName.isEmpty())
{
m_document->bookmarkManager()->renameBookmark(&bookmark, newName);
}
}
}
void Part::slotPreviousBookmark()
{
......
......@@ -138,6 +138,7 @@ class Part : public KParts::ReadOnlyPart, public Okular::DocumentObserver, publi
void slotHistoryBack();
void slotHistoryNext();
void slotAddBookmark();
void slotRenameBookmark();
void slotPreviousBookmark();
void slotNextBookmark();
void slotFindNext();
......@@ -234,6 +235,7 @@ class Part : public KParts::ReadOnlyPart, public Okular::DocumentObserver, publi
KAction *m_historyBack;
KAction *m_historyNext;
KAction *m_addBookmark;
KAction *m_renameBookmark;
KAction *m_prevBookmark;
KAction *m_nextBookmark;
KAction *m_copy;
......
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui name="okular_part" version="31">
<kpartgui name="okular_part" version="32">
<MenuBar>
<Menu name="file"><text>&amp;File</text>
<Action name="get_new_stuff" group="file_open"/>
......@@ -58,6 +58,7 @@
</Menu>
<Menu name="bookmarks"><text>&amp;Bookmarks</text>
<Action name="bookmark_add"/>
<Action name="rename_bookmark"/>
<Action name="previous_bookmark"/>
<Action name="next_bookmark" />
<Separator/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment