Blob Blame History Raw
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