diff -up amarok-2.8.0/src/ActionClasses.cpp.onlinedoc amarok-2.8.0/src/ActionClasses.cpp --- amarok-2.8.0/src/ActionClasses.cpp.onlinedoc 2013-08-14 15:22:51.000000000 -0500 +++ amarok-2.8.0/src/ActionClasses.cpp 2013-08-15 10:40:40.656472890 -0500 @@ -33,10 +33,12 @@ #include "widgets/Osd.h" #include "KNotificationBackend.h" +#include <QFile> #include <KAuthorized> #include <KHelpMenu> #include <KLocale> #include <KToolBar> +#include <KToolInvocation> extern OcsData ocsData; @@ -62,6 +64,7 @@ namespace Amarok using namespace Amarok; KHelpMenu *Menu::s_helpMenu = 0; +OnlineHelpHandler *Menu::s_onlineHelpHandler = 0; static void safePlug( KActionCollection *ac, const char *name, QWidget *w ) @@ -151,6 +154,20 @@ Menu::helpMenu( QWidget *parent ) //STAT KMenu* menu = s_helpMenu->menu(); + // If amarok-doc is not installed, bring up the online version instead. + if ( !QFile::exists( "/usr/share/doc/HTML/en/amarok/index.docbook" ) ) { + QAction *contentsAction = s_helpMenu->action( KHelpMenu::menuHelpContents ); + // disconnect the default slot which fires up KHelpCenter + disconnect( contentsAction, SIGNAL(triggered(bool)), s_helpMenu, SLOT(appHelpActivated()) ); + if ( s_onlineHelpHandler == 0 ) + s_onlineHelpHandler = new OnlineHelpHandler( parent ); + else + // ensure no duplicate connection + disconnect( contentsAction, SIGNAL(triggered(bool)), s_onlineHelpHandler, SLOT(onlineHelpActivated()) ); + // connect our custom slot which fires up a browser on UserBase instead + connect( contentsAction, SIGNAL(triggered(bool)), s_onlineHelpHandler, SLOT(onlineHelpActivated()) ); + } + // "What's This" isn't currently defined for anything in Amarok, so let's remove it s_helpMenu->action( KHelpMenu::menuWhatsThis )->setVisible( false ); @@ -160,6 +177,17 @@ Menu::helpMenu( QWidget *parent ) //STAT return menu; } +OnlineHelpHandler::OnlineHelpHandler( QObject* parent ) + : QObject( parent ) +{ +} + +void +OnlineHelpHandler::onlineHelpActivated() +{ + KToolInvocation::invokeBrowser( "http://userbase.kde.org/Amarok/Manual" ); +} + ////////////////////////////////////////////////////////////////////////////////////////// // PlayPauseAction ////////////////////////////////////////////////////////////////////////////////////////// diff -up amarok-2.8.0/src/ActionClasses.h.onlinedoc amarok-2.8.0/src/ActionClasses.h --- amarok-2.8.0/src/ActionClasses.h.onlinedoc 2013-08-14 15:22:51.000000000 -0500 +++ amarok-2.8.0/src/ActionClasses.h 2013-08-15 10:38:12.378047150 -0500 @@ -34,6 +34,16 @@ class KHelpMenu; namespace Amarok { + class OnlineHelpHandler : public QObject + { + Q_OBJECT + public: + OnlineHelpHandler( QObject* parent ); + + public slots: + void onlineHelpActivated(); + }; + class Menu : public KMenu { Q_OBJECT @@ -45,6 +55,7 @@ namespace Amarok private: static Menu *s_instance; static KHelpMenu *s_helpMenu; + static OnlineHelpHandler *s_onlineHelpHandler; }; class MenuAction : public KAction