[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/okular/ui
From: Eike Hein <hein () kde ! org>
Date: 2010-09-11 13:34:23
Message-ID: 20100911133423.2DD21AC888 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1174208 by hein:
Add support for KDE's Web Shortcuts to the page view popup menus of
the two text selection tools.
BUG:119685
FIXED-IN:4.6
M +79 -0 pageview.cpp
M +6 -0 pageview.h
--- trunk/KDE/kdegraphics/okular/ui/pageview.cpp #1174207:1174208
@@ -45,6 +45,9 @@
#include <kdebug.h>
#include <kmessagebox.h>
#include <kicon.h>
+#include <kurifilter.h>
+#include <kstringhandler.h>
+#include <ktoolinvocation.h>
// system includes
#include <math.h>
@@ -2032,6 +2035,7 @@
if ( Okular::Settings::useKTTSD() )
speakText = menu.addAction( KIcon("text-speak"), i18n( "Speak \
Text" ) ); }
+ addWebShortcutsMenu( &menu, selectedText );
menu.addTitle( i18n( "Image (%1 by %2 pixels)", selectionRect.width(), \
selectionRect.height() ) );
imageToClipboard = menu.addAction( KIcon("image-x-generic"), i18n( "Copy \
to Clipboard" ) );
imageToFile = menu.addAction( KIcon("document-save"), i18n( "Save to \
File..." ) ); @@ -2135,6 +2139,7 @@
textToClipboard->setEnabled( false );
textToClipboard->setText( i18n("Copy forbidden by DRM") );
}
+ addWebShortcutsMenu( &menu, d->selectedText() );
QAction *choice = menu.exec( e->globalPos() );
// check if the user really selected an action
if ( choice )
@@ -2908,6 +2913,60 @@
verticalScrollBar()->setPageStep( vs.height() );
}
+void PageView::addWebShortcutsMenu( KMenu * menu, const QString & text )
+{
+ if ( text.isEmpty() )
+ {
+ return;
+ }
+
+ QString searchText = text;
+ searchText = searchText.replace( '\n', ' ' ).replace( '\r', ' ' ).simplified();
+
+ if ( searchText.isEmpty() )
+ {
+ return;
+ }
+
+ KUriFilterData filterData( searchText );
+
+ filterData.setSearchFilteringOptions( \
KUriFilterData::RetrievePreferredSearchProvidersOnly ); +
+ if ( KUriFilter::self()->filterSearchUri( filterData, \
KUriFilter::NormalTextFilter ) ) + {
+ const QStringList searchProviders = filterData.preferredSearchProviders();
+
+ if ( !searchProviders.isEmpty() )
+ {
+ KMenu *webShortcutsMenu = new KMenu( menu );
+ webShortcutsMenu->setIcon( KIcon( "preferences-web-browser-shortcuts" ) \
); +
+ const QString squeezedText = KStringHandler::rsqueeze( searchText, 21 );
+ webShortcutsMenu->setTitle( i18n( "Search for '%1' with", squeezedText ) \
); +
+ KAction *action = 0;
+
+ foreach( const QString &searchProvider, searchProviders )
+ {
+ action = new KAction( searchProvider, webShortcutsMenu );
+ action->setIcon( KIcon( \
filterData.iconNameForPreferredSearchProvider( searchProvider ) ) ); + \
action->setData( filterData.queryForPreferredSearchProvider( searchProvider ) ); + \
connect( action, SIGNAL( triggered() ), this, SLOT( slotHandleWebShortcutAction() ) \
); + webShortcutsMenu->addAction( action );
+ }
+
+ webShortcutsMenu->addSeparator();
+
+ action = new KAction( i18n( "Configure Web Shortcuts..." ), \
webShortcutsMenu ); + action->setIcon( KIcon( "configure" ) );
+ connect( action, SIGNAL( triggered() ), this, SLOT( \
slotConfigureWebShortcuts() ) ); + webShortcutsMenu->addAction( action );
+
+ menu->addMenu(webShortcutsMenu);
+ }
+ }
+}
+
//BEGIN private SLOTS
void PageView::slotRelayoutPages()
// called by: notifySetup, viewportResizeEvent, slotViewMode, slotContinuousToggled, \
updateZoom @@ -3316,6 +3375,26 @@
setCursor( Qt::SizeAllCursor );
}
+void PageView::slotHandleWebShortcutAction()
+{
+ KAction *action = qobject_cast<KAction*>( sender() );
+
+ if (action)
+ {
+ KUriFilterData filterData( action->data().toString() );
+
+ if ( KUriFilter::self()->filterSearchUri( filterData, \
KUriFilter::WebShortcutFilter ) ) + {
+ KToolInvocation::invokeBrowser( filterData.uri().url() );
+ }
+ }
+}
+
+void PageView::slotConfigureWebShortcuts()
+{
+ KToolInvocation::kdeinitExec( "kcmshell4", QStringList() << "ebrowsing" );
+}
+
void PageView::slotZoom()
{
setFocus();
--- trunk/KDE/kdegraphics/okular/ui/pageview.h #1174207:1174208
@@ -29,6 +29,7 @@
class KAction;
class KActionCollection;
+class KMenu;
class KUrl;
namespace Okular {
@@ -174,6 +175,8 @@
void resizeContentArea( const QSize & newSize );
+ void addWebShortcutsMenu( KMenu * menu, const QString & text );
+
// don't want to expose classes in here
class PageViewPrivate * d;
@@ -193,6 +196,9 @@
// activated by left click timer
void slotShowSizeAllCursor();
+ void slotHandleWebShortcutAction();
+ void slotConfigureWebShortcuts();
+
// connected to local actions (toolbar, menu, ..)
void slotZoom();
void slotZoomIn();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic