From dc3ce7e365dcfbf8089b643e1fa4e4cd88dc9d6d Mon Sep 17 00:00:00 2001
From: Mark Liversedge <liversedge@gmail.com>
Date: Fri, 17 Jan 2020 16:04:27 +0000
Subject: Connect with Strava

.. the authorise button on the add cloud wizard now
   shows a 'Connect with Strava' icon

.. all other services continue to have a button that
   is labelled 'Authorise'

.. this is needed to comply with the Strava API application
   guidelines.

diff --git a/src/Cloud/AddCloudWizard.cpp b/src/Cloud/AddCloudWizard.cpp
index db1aea7f1..6deb107bd 100644
--- a/src/Cloud/AddCloudWizard.cpp
+++ b/src/Cloud/AddCloudWizard.cpp
@@ -27,6 +27,7 @@
 #include "OAuthDialog.h"
 
 #include <QMessageBox>
+#include <QPixmap>
 #include <QRegExp>
 
 // WIZARD FLOW
@@ -271,13 +272,15 @@ AddAuth::AddAuth(AddCloudWizard *parent) : QWizardPage(parent), wizard(parent)
     pass = new QLineEdit(this);
     pass->setEchoMode(QLineEdit::Password);
     pass->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-    auth = new QPushButton(tr("Authorise"), this);
-    auth->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
     token = new QLabel(this);
     token->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
     message = new QLabel(this);
     message->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
 
+    // is there an icon for the authorise button?
+    auth = new QPushButton(tr("Authorise"), this);
+    auth->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+
     // labels
     comboLabel = new QLabel("");
     urlLabel = new QLabel(tr("URL"));
@@ -367,6 +370,24 @@ AddAuth::initializePage()
     // clone to do next few steps!
     setSubTitle(QString(tr("%1 Credentials and authorisation")).arg(wizard->cloudService->uiName()));
 
+    // icon on the authorize button
+    if (wizard->cloudService && wizard->cloudService->authiconpath() != "") {
+
+        // scaling icon hack (193x48 is strava icon size)
+        QPixmap pix(wizard->cloudService->authiconpath());
+        QIcon authicon(pix.scaled(193*dpiXFactor, 48*dpiXFactor));
+        auth->setIconSize(QSize(193*dpiXFactor, 48*dpiYFactor));
+
+        // set the pushbutton
+        auth->setText("");
+        auth->setIcon(authicon);
+    } else {
+
+        // standard pushbutton (reset after used by strava)
+        auth->setText(tr("Authorise"));
+        auth->setIcon(QIcon());
+    }
+
     // show  all the widgets relevant for this service and update the value from the
     // settings we have collected (which will have been defaulted).
     QString cname;
diff --git a/src/Cloud/CloudService.h b/src/Cloud/CloudService.h
index b9c14c90c..95ebcc5ec 100644
--- a/src/Cloud/CloudService.h
+++ b/src/Cloud/CloudService.h
@@ -95,6 +95,9 @@ class CloudService : public QObject {
         // need a logo, we may resize but will keep aspect ratio
         virtual QImage logo() const = 0;
 
+        // an icon to put on the authorize button (mandated by strava guidelines)
+        virtual QString authiconpath() const { return QString(""); }
+
         // register with capabilities of the service - emerging standard
         // is a service that allows oauth, query and upload as well as download
         enum { OAuth=0x01, UserPass=0x02, Upload=0x04, Download=0x08, Query=0x10} capa_;
diff --git a/src/Cloud/Strava.h b/src/Cloud/Strava.h
index 1c51a5da4..45ee2f57c 100644
--- a/src/Cloud/Strava.h
+++ b/src/Cloud/Strava.h
@@ -45,6 +45,8 @@ class Strava : public CloudService {
 
         //virtual int capabilities() const { return OAuth | Upload | Download | Query ; } // Default
 
+        QString authiconpath() const { return QString(":images/services/strava_connect.png"); }
+
         // write a file
         bool writeFile(QByteArray &data, QString remotename, RideFile *ride);
 
diff --git a/src/Resources/application.qrc b/src/Resources/application.qrc
index 3fae9b8da..86fbdf032 100644
--- a/src/Resources/application.qrc
+++ b/src/Resources/application.qrc
@@ -167,6 +167,7 @@
         <file>web/googlemap/dark.css</file>
         <file>images/toolbar/cloud.png</file>
         <file>images/services/strava_compatible.png</file>
+        <file>images/services/strava_connect.png</file>
         <file>images/services/cyclinganalytics.png</file>
         <file>images/services/dropbox.png</file>
         <file>images/services/googledrive.png</file>
diff --git a/src/Resources/images/services/strava_connect.png b/src/Resources/images/services/strava_connect.png
new file mode 100644
index 000000000..868c433da
--- /dev/null
+++ b/src/Resources/images/services/strava_connect.png
@@ -0,0 +1,15 @@
+PNG
+
+   IHDR      0       sRGB   IDATx\wUG]HK
+d"# %Ha21[h20DM4ь$C1F:DI/{O\f/y{O{<<<<<<<9`bg=u@怕Gұ-}SJ*U'竞%_	==Q6B0(-AK@&qʕ+˔)SOAGρL1[qPĺ}s #8"qd&<A:c3y[A:c3y[A:c3y[A:c3y[A:c3H3rK:}4.^5k^sYAѣX"*Tk.7I;V :ԨS1(Sjpp'ʪdUl5Z<b&̃=G;!sdX\ MWbǱxb9rV*իۣ\9!%>ˣrE+Wb֭x'H$peWժUCٲeΝäIСCn=[oVf=ZxQ[0޻@{6WSFjSj؜KZNy	fP9!xstX/
+/*/O	P,1qDfwujժ͛7c頖+I4c_Ȗܼyst]ILcǎ5\. R34m6g٭K<'Z}ޓa/a?#Pn"䍲SΝJ֬dlxihQ,lMaMĲ7X@0|G98p :w={m۶z÷oKƍ`4?^N<6k.޽R|rPFI^W .\k׮UW$Ν;+VٳFRSs<I>M3g:O@|$x5<ڷmۦ{g_
+.#	qELN0rHfXlbygR^ZIMM,:J6K7-NA?)]FYϛ З|,V 	>.	O:7e˖Ӻ6m
+9w@O/>` v P 9ڵkRO8#JҥK*VׂB3m4ХR
+uпpmg5xkdL	ݖ(Q/ZWk.\urC.]PvmڢE/-$mh֬Yg;qU( )CUu#`wN1L>+<̣?R}c+11njul_N
+ }xZ;>;-]pihq?~.BZ<Y:A˰8
+a_ȫPHIUVMBF7Bo̱}Ő!CЯ_?P=J~;FÇmrU{P8>}`jm(N40-ѠA:h1H{Ud2l0'VZ,3Fݖf͚i'z$DRR%RJU=F5ѣ6=zh L9#FPs;+%irj^T]IZptɸE/Nc'	{1fi]3zARRڳ'Wṡi~ދ	O*B'Q@Gj 'D̖PS=J7nݺv[(`?Hs1('SS@¸~UVZ;4x?)]?nP׮]
+:ӥEc B¤dk#^Iibzn["x|'\mlGOts_Y"v;fbZ$P@0m-E#"7bD[]k.cBF DiA̌X`GuG.O(="1vsPI8"X[zu'P%ui	8PA{sJ&:`f%eS1[hkݾRe݆AǞ?e#Xs}Z;A_QfO%3F$iIhF0U<~Sސ"=\E4-&]4c0pe1h2CN* ns1.x衇ݢթS'<#:t/h)1SX<=Қ5.jq1KA;YLiJv'U>z{%}JnjyqmXktt첟ߪq	(]:im>º	 92Bbzj-MbΜ9ϝ;Wc_Іo$ssf12yd9I&.18޳gf辸|=в,lA@~ =K@l2TyطG?#xY2pf2psmoXvf幄k3ì`a6AJk AA;buX e2t	I*5u+,N͛E(5,{ҥKcŘ9sjMQ)"5]ݱF֭lԩaM6:Y4n`OԱcGud_?@t("f1ROO@62_]p*SLT-vLA@xj\J~($[d'&-Oo,};?XMv@^,.m 	q3a|]^+JyQj{ѬGtJ?	
+d)lژ`,pkXZEZѤv8س'-m|ۺ>q?r,'ƥ5_t`5
+b'XZpA4gI|/~t`죰&9F ' 񆰒~%%\?<$5Y?7+l_ܽdkP:]Ezb_xɽ8G!BLJOt
+Q:<e-Ѝy՟eZ;r88$<
+@z@1Q7w9.<q ȸ[7.<q ȸ[7.<q ȸ[7.<q ȸ[7.<qʗKG3n~CyȓymqX/3ʵs)')ewȏ>ɓ@ E͖Wbrix_sr@D%wK~ Xc    IENDB`
\ No newline at end of file
