commit 992748ab72cbe2889005afff1721efc47bbe7733
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Dec 4 21:41:28 2020 +0100

    Report to Google Analytics that we're watching a tutorial.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
index d9bede7a..004d77eb 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
@@ -22,17 +22,20 @@ package org.distorted.dialogs;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import android.os.Bundle;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.View;
 import android.widget.Button;
 import android.widget.FrameLayout;
-import android.widget.ImageView;
 import android.widget.LinearLayout;
 
 import androidx.core.content.ContextCompat;
 import androidx.fragment.app.FragmentActivity;
 
+import com.google.firebase.analytics.FirebaseAnalytics;
+
+import org.distorted.main.BuildConfig;
 import org.distorted.main.R;
 import org.distorted.main.RubikActivity;
 import org.distorted.objects.ObjectList;
@@ -42,10 +45,6 @@ import org.distorted.tutorial.TutorialList;
 
 public class RubikDialogTutorialView extends FrameLayout
   {
-  private TutorialList mList;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
   public RubikDialogTutorialView(Context context, AttributeSet attrs, int defStyle)
     {
     super(context, attrs, defStyle);
@@ -70,21 +69,21 @@ public class RubikDialogTutorialView extends FrameLayout
     Resources res = act.getResources();
     String packageName = act.getPackageName();
 
-    mList = TutorialList.getObject(position);
-    ObjectList objList = mList.getObjectList();
-    int size           = mList.getSize();
+    TutorialList list  = TutorialList.getObject(position);
+    ObjectList objList = list.getObjectList();
+    int size           = list.getSize();
 
     View tab = inflate( act, R.layout.dialog_tutorial_tab, null);
     LinearLayout layout = tab.findViewById(R.id.tabLayout);
 
-    int numTutorials = mList.getNumTutorials();
+    int numTutorials = list.getNumTutorials();
 
     for(int i=0; i<numTutorials; i++)
       {
-      String coun = mList.getTutorialLanguage(i);
-      String desc = mList.getTutorialDescription(i);
-      String url  = mList.getTutorialURL(i);
-      String auth = mList.getTutorialAuthor(i);
+      String coun = list.getTutorialLanguage(i);
+      String desc = list.getTutorialDescription(i);
+      String url  = list.getTutorialURL(i);
+      String auth = list.getTutorialAuthor(i);
 
       int countryID = res.getIdentifier( coun, "drawable", packageName);
 
@@ -97,14 +96,16 @@ public class RubikDialogTutorialView extends FrameLayout
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private View createRow(final RubikActivity act, int countryID, final String desc, final String url, String auth, int height, final ObjectList obj, final int size)
+  private View createRow(final RubikActivity act, int countryID, final String desc, final String url,
+                         final String auth, int height, final ObjectList obj, final int size)
     {
     View row = inflate( act, R.layout.dialog_tutorial_row, null);
     Button butt = row.findViewById(R.id.tutorialRowButton);
 
     int id = countryID!=0 ? countryID : R.drawable.un;
+    final String buttText = desc+" ("+auth+")";
 
-    butt.setText(desc+" ("+auth+")");
+    butt.setText(buttText);
     butt.setTextSize(TypedValue.COMPLEX_UNIT_PX, 0.5f*height);
     butt.setHeight(height);
 
@@ -118,9 +119,35 @@ public class RubikDialogTutorialView extends FrameLayout
       public void onClick(View v)
         {
         act.switchTutorial(url,obj,size);
+        analyticsReport(act,desc,auth,obj,size);
         }
       });
 
     return row;
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void analyticsReport(RubikActivity act, String desc, String author, ObjectList obj, int size)
+    {
+    String message = desc+" ("+author+")";
+
+    if( BuildConfig.DEBUG )
+       {
+       android.util.Log.d("tutorial", message);
+       }
+    else
+      {
+      FirebaseAnalytics analytics = act.getAnalytics();
+      String name = obj.name()+"_"+size;
+
+      if( analytics!=null )
+        {
+        Bundle bundle = new Bundle();
+        bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, message);
+        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name);
+        analytics.logEvent(FirebaseAnalytics.Event.TUTORIAL_BEGIN, bundle);
+        }
+      }
+    }
   }
