diff --git a/core/link.cpp b/core/link.cpp index cc56be1f8..80a532601 100644 --- a/core/link.cpp +++ b/core/link.cpp @@ -10,6 +10,56 @@ // local includes #include "link.h" +#include + KPDFLink::~KPDFLink() { } + +QString KPDFLinkGoto::linkTip() const +{ + return m_extFileName.isEmpty() ? ( m_vp.pageNumber != -1 ? i18n( "Go to page %1" ).arg( m_vp.pageNumber + 1 ) : "" ) : i18n("Open external file"); +} + +QString KPDFLinkExecute::linkTip() const +{ + return i18n( "Execute '%1'..." ).arg( m_fileName ); +} + +QString KPDFLinkBrowse::linkTip() const +{ + return m_url; +} + +QString KPDFLinkAction::linkTip() const +{ + switch ( m_type ) + { + case PageFirst: + return i18n( "First Page" ); + case PagePrev: + return i18n( "Previous Page" ); + case PageNext: + return i18n( "Next Page" ); + case PageLast: + return i18n( "Last Page" ); + case HistoryBack: + return i18n( "Back" ); + case HistoryForward: + return i18n( "Forward" ); + case Quit: + return i18n( "Quit" ); + case Presentation: + return i18n( "Start Presentation" ); + case EndPresentation: + return i18n( "End Presentation" ); + case Find: + return i18n( "Find..." ); + case GoToPage: + return i18n( "Go To Page..." ); + case Close: + default: ; + } + + return QString::null; +} diff --git a/core/link.h b/core/link.h index bbff4eaee..10420c50f 100644 --- a/core/link.h +++ b/core/link.h @@ -27,6 +27,7 @@ class KPDFLink // get link type (inherited classes mustreturn an unique identifier) enum LinkType { Goto, Execute, Browse, Action, Movie }; virtual LinkType linkType() const = 0; + virtual QString linkTip() const { return QString::null; } // virtual destructor (remove warnings) virtual ~KPDFLink(); @@ -45,6 +46,7 @@ class KPDFLinkGoto : public KPDFLink // create a KPDFLink_Goto KPDFLinkGoto( QString extFileName, const DocumentViewport & vp ) { m_extFileName = extFileName; m_vp = vp; } LinkType linkType() const { return Goto; } + QString linkTip() const; private: QString m_extFileName; @@ -62,6 +64,7 @@ class KPDFLinkExecute : public KPDFLink // create a KPDFLink_Execute KPDFLinkExecute( const QString & file, const QString & params ) { m_fileName = file; m_parameters = params; } LinkType linkType() const { return Execute; } + QString linkTip() const; private: QString m_fileName; @@ -78,6 +81,7 @@ class KPDFLinkBrowse : public KPDFLink // create a KPDFLink_Browse KPDFLinkBrowse( const QString &url ) { m_url = url; } LinkType linkType() const { return Browse; } + QString linkTip() const; private: QString m_url; @@ -96,6 +100,7 @@ class KPDFLinkAction : public KPDFLink // create a KPDFLink_Action KPDFLinkAction( enum ActionType actionType ) { m_type = actionType; } LinkType linkType() const { return Action; } + QString linkTip() const; private: ActionType m_type; diff --git a/ui/presentationwidget.cpp b/ui/presentationwidget.cpp index 47ce70fcb..dad008ec9 100644 --- a/ui/presentationwidget.cpp +++ b/ui/presentationwidget.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -406,6 +407,11 @@ void PresentationWidget::testCursorOnLink( int x, int y ) // change cursor shape m_handCursor = link != 0; setCursor( m_handCursor ? KCursor::handCursor() : KCursor::arrowCursor()); + + // set tooltip over link's rect + QString tip = link ? link->linkTip() : ""; + if ( m_handCursor && !tip.isEmpty() ) + QToolTip::add( this, linkRect, tip ); } }