PageRenderTime 48ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/marble-4.8.97/src/lib/TinyWebBrowser.cpp

#
C++ | 116 lines | 78 code | 22 blank | 16 comment | 4 complexity | 9465fa8e018cacb851f3ceb12faaddf6 MD5 | raw file
Possible License(s): GPL-2.0, CC-BY-SA-3.0, GPL-3.0, LGPL-2.1, CC-BY-3.0
  1. //
  2. // This file is part of the Marble Project.
  3. //
  4. // This program is free software licensed under the GNU LGPL. You can
  5. // find a copy of this license in LICENSE.txt in the top directory of
  6. // the source code.
  7. //
  8. // Copyright 2006-2007 Torsten Rahn <tackat@kde.org>
  9. // Copyright 2007 Inge Wallin <ingwa@kde.org>
  10. // Copyright 2008 Simon Hausmann <hausmann@kde.org>
  11. //
  12. // Self
  13. #include "TinyWebBrowser.h"
  14. // Qt
  15. #include <QtCore/QFileInfo>
  16. #include <QtCore/QPointer>
  17. #include <QtCore/QRegExp>
  18. #include <QtGui/QAction>
  19. #include <QtGui/QDesktopServices>
  20. #include <QtGui/QPainter>
  21. #include <QtGui/QPrintDialog>
  22. #include <QtGui/QPrinter>
  23. #include <QtGui/QTextFrame>
  24. // Marble
  25. #include "MarbleGlobal.h"
  26. #include "MarbleDebug.h"
  27. #include "MarbleDirs.h"
  28. #include "MarbleLocale.h"
  29. namespace Marble
  30. {
  31. class TinyWebBrowserPrivate
  32. {
  33. };
  34. static QString guessWikipediaDomain()
  35. {
  36. const QString code = MarbleLocale::languageCode();
  37. return QString ( "http://%1.wikipedia.org/" ).arg ( code );
  38. }
  39. TinyWebBrowser::TinyWebBrowser( QWidget* parent )
  40. : QWebView( parent ),
  41. d( 0 )
  42. {
  43. connect( this, SIGNAL( statusBarMessage( QString ) ),
  44. this, SIGNAL( statusMessage( QString ) ) );
  45. page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks );
  46. connect( this, SIGNAL( linkClicked( QUrl ) ),
  47. this, SLOT( openExternalLink( QUrl ) ) );
  48. connect( this, SIGNAL( titleChanged( QString ) ),
  49. this, SLOT( setWindowTitle( QString ) ) );
  50. pageAction( QWebPage::OpenLinkInNewWindow )->setEnabled( false );
  51. pageAction( QWebPage::OpenLinkInNewWindow )->setVisible( false );
  52. }
  53. TinyWebBrowser::~TinyWebBrowser()
  54. {
  55. // not yet needed
  56. //delete d;
  57. }
  58. void TinyWebBrowser::setWikipediaPath( const QString& relativeUrl )
  59. {
  60. QUrl url = relativeUrl;
  61. if ( url.isRelative() )
  62. url = QUrl( guessWikipediaDomain() ).resolved( url );
  63. load( url );
  64. }
  65. void TinyWebBrowser::print()
  66. {
  67. #ifndef QT_NO_PRINTER
  68. QPrinter printer;
  69. QPointer<QPrintDialog> dlg = new QPrintDialog( &printer, this );
  70. if ( dlg->exec() )
  71. QWebView::print( &printer );
  72. delete dlg;
  73. #endif
  74. }
  75. QWebView *TinyWebBrowser::createWindow( QWebPage::WebWindowType type )
  76. {
  77. TinyWebBrowser *view = new TinyWebBrowser( this );
  78. if ( type == QWebPage::WebModalDialog ) {
  79. view->setWindowModality( Qt::WindowModal );
  80. }
  81. return view;
  82. }
  83. void TinyWebBrowser::openExternalLink( QUrl url )
  84. {
  85. QDesktopServices::openUrl( url );
  86. }
  87. QByteArray TinyWebBrowser::userAgent(const QString &platform, const QString &component)
  88. {
  89. QString result( "Mozilla/5.0 (compatible; Marble/%1; %2; %3)" );
  90. result = result.arg( MARBLE_VERSION_STRING, platform, component);
  91. return result.toAscii();
  92. }
  93. } // namespace Marble
  94. #include "TinyWebBrowser.moc"