commit 5b4eaf7ec54d37cf3b15a4f3abb2edec5bc36cb2
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Nov 24 00:28:03 2020 +0100

    Progress creating the Tutorial Dialog.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java b/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java
index ada809d1..0a86ad58 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogScoresView.java
@@ -43,7 +43,7 @@ import static org.distorted.scores.RubikScoresDownloader.MAX_PLACES;
 public class RubikDialogScoresView extends FrameLayout
   {
   private LinearLayout mLayout;
-  private int mWidth;
+  private int mHeight;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -61,11 +61,11 @@ public class RubikDialogScoresView extends FrameLayout
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public RubikDialogScoresView(Context context, int width, boolean isSubmitting)
+  public RubikDialogScoresView(Context context, int height, boolean isSubmitting)
     {
     super(context);
 
-    mWidth = width;
+    mHeight = height;
 
     View view = inflate(context, R.layout.dialog_scores_downloading, null);
     addView(view);
@@ -82,7 +82,7 @@ public class RubikDialogScoresView extends FrameLayout
     TextView text = levelLayout.findViewById(R.id.scoresScrambleTitle);
     text.setText(act.getString(R.string.lv_placeholder,level+1));
 
-    int size = (int)(mWidth* RubikActivity.SCORES_LEVEL_TEXT);
+    int size = (int)(mHeight*RubikActivity.SCORES_LEVEL_TEXT);
     text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
 
     Resources res = act.getResources();
@@ -103,7 +103,7 @@ public class RubikDialogScoresView extends FrameLayout
     String theirTime;
     int theirCountryID;
 
-    int height = (int)(mWidth* RubikActivity.SCORES_ITEM_TEXT);
+    int height = (int)(mHeight* RubikActivity.SCORES_ITEM_TEXT);
     int white = res.getColor(R.color.white);
     int red   = res.getColor(R.color.red);
     boolean equals;
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
index 0a1946e1..c839a417 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorial.java
@@ -98,7 +98,7 @@ public class RubikDialogTutorial extends AppCompatDialogFragment
 
     ViewPager viewPager = view.findViewById(R.id.viewpager);
     TabLayout tabLayout = view.findViewById(R.id.sliding_tabs);
-    mPagerAdapter = new RubikDialogTutorialPagerAdapter(act, viewPager, this);
+    mPagerAdapter = new RubikDialogTutorialPagerAdapter(act,viewPager);
     tabLayout.setupWithViewPager(viewPager);
     viewPager.setCurrentItem(curTab);
 
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorialPagerAdapter.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorialPagerAdapter.java
index a78a4944..e2b1aba9 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorialPagerAdapter.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorialPagerAdapter.java
@@ -19,6 +19,7 @@
 
 package org.distorted.dialogs;
 
+import android.util.DisplayMetrics;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -35,15 +36,14 @@ class RubikDialogTutorialPagerAdapter extends PagerAdapter
   {
   private FragmentActivity mAct;
   private RubikDialogTutorialView[] mViews;
-  private RubikDialogTutorial mDialog;
-  private int mNumTabs;
+
+  private int mNumTabs, mHeight;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  RubikDialogTutorialPagerAdapter(FragmentActivity act, ViewPager viewPager, RubikDialogTutorial dialog)
+  RubikDialogTutorialPagerAdapter(FragmentActivity act, ViewPager viewPager)
     {
     mAct = act;
-    mDialog = dialog;
     mNumTabs = TutorialList.NUM_OBJECTS;
     mViews = new RubikDialogTutorialView[mNumTabs];
 
@@ -64,7 +64,9 @@ class RubikDialogTutorialPagerAdapter extends PagerAdapter
   @NonNull
   public Object instantiateItem(@NonNull ViewGroup collection, final int position)
     {
-    mViews[position] = new RubikDialogTutorialView(mAct, mDialog, position);
+    DisplayMetrics metrics = mAct.getResources().getDisplayMetrics();
+
+    mViews[position] = new RubikDialogTutorialView(mAct, metrics.heightPixels, position);
     collection.addView(mViews[position]);
 
     return mViews[position];
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java b/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
index 88ddf0fd..d9bede7a 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogTutorialView.java
@@ -21,16 +21,16 @@ package org.distorted.dialogs;
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.View;
 import android.widget.Button;
 import android.widget.FrameLayout;
-import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.TextView;
 
+import androidx.core.content.ContextCompat;
 import androidx.fragment.app.FragmentActivity;
 
 import org.distorted.main.R;
@@ -60,12 +60,11 @@ public class RubikDialogTutorialView extends FrameLayout
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public RubikDialogTutorialView(FragmentActivity act, RubikDialogTutorial dialog, int position)
+  public RubikDialogTutorialView(FragmentActivity act, int height, int position)
     {
     super(act);
 
-    //int height = (int)(mWidth* RubikActivity.TUTORIAL_ITEM_TEXT);
-    int height = 50;
+    int heightT = (int)(height* RubikActivity.TUTORIAL_ITEM_TEXT);
 
     RubikActivity ract = (RubikActivity)getContext();
     Resources res = act.getResources();
@@ -85,10 +84,11 @@ public class RubikDialogTutorialView extends FrameLayout
       String coun = mList.getTutorialLanguage(i);
       String desc = mList.getTutorialDescription(i);
       String url  = mList.getTutorialURL(i);
+      String auth = mList.getTutorialAuthor(i);
 
       int countryID = res.getIdentifier( coun, "drawable", packageName);
 
-      View row = createRow(ract,countryID,desc,url,height,objList,size);
+      View row = createRow(ract,countryID,desc,url,auth,heightT,objList,size);
       layout.addView(row);
       }
 
@@ -97,18 +97,20 @@ public class RubikDialogTutorialView extends FrameLayout
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private View createRow(final RubikActivity act, int countryID, final String desc, final String url, int height, final ObjectList obj, final int size)
+  private View createRow(final RubikActivity act, int countryID, final String desc, final String url, String auth, int height, final ObjectList obj, final int size)
     {
-    int id = countryID!=0 ? countryID : R.drawable.un;
-
     View row = inflate( act, R.layout.dialog_tutorial_row, null);
     Button butt = row.findViewById(R.id.tutorialRowButton);
 
-    butt.setPadding(20,0,0,0);
+    int id = countryID!=0 ? countryID : R.drawable.un;
+
+    butt.setText(desc+" ("+auth+")");
+    butt.setTextSize(TypedValue.COMPLEX_UNIT_PX, 0.5f*height);
+    butt.setHeight(height);
 
-    butt.setCompoundDrawablesWithIntrinsicBounds(id,0,0,0);
-    butt.setText(desc);
-    butt.setTextSize(TypedValue.COMPLEX_UNIT_PX, 0.7f*height);
+    Drawable img = ContextCompat.getDrawable(act,id);
+    img.setBounds(0, 0, (int)(1.0f*height), (int)(0.66f*height) );
+    butt.setCompoundDrawables(img,null,null,null);
 
     butt.setOnClickListener( new View.OnClickListener()
       {
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index 17d732ac..32050422 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -67,6 +67,7 @@ public class RubikActivity extends AppCompatActivity
     public static final float PATTERN_CHILD_TEXT  = 0.02f;
     public static final float SCORES_LEVEL_TEXT   = 0.035f;
     public static final float SCORES_ITEM_TEXT    = 0.030f;
+    public static final float TUTORIAL_ITEM_TEXT  = 0.050f;
     public static final float DIALOG_BUTTON_SIZE  = 0.06f;
     public static final float MENU_BIG_TEXT_SIZE  = 0.05f;
     public static final float MENU_MED_TEXT_SIZE  = 0.04f;
diff --git a/src/main/java/org/distorted/tutorial/TutorialActivity.java b/src/main/java/org/distorted/tutorial/TutorialActivity.java
index 05690ba6..a0038022 100644
--- a/src/main/java/org/distorted/tutorial/TutorialActivity.java
+++ b/src/main/java/org/distorted/tutorial/TutorialActivity.java
@@ -37,7 +37,6 @@ import org.distorted.library.main.DistortedLibrary;
 import org.distorted.main.R;
 import org.distorted.objects.ObjectList;
 import org.distorted.objects.TwistyObject;
-import org.distorted.states.RubikStatePlay;
 import org.distorted.states.StateList;
 
 import static org.distorted.main.RubikRenderer.BRIGHTNESS;
@@ -67,6 +66,7 @@ public class TutorialActivity extends AppCompatActivity
     private TutorialState mState;
     private String mURL;
     private int mObjectOrdinal, mObjectSize;
+    private TutorialWebView mWebView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -153,8 +153,8 @@ public class TutorialActivity extends AppCompatActivity
       mState.createRightPane(this,width);
 
       WebView videoView = findViewById(R.id.tutorialVideoView);
-      TutorialWebView webView = new TutorialWebView(this,videoView);
-      webView.load(URL+mURL);
+      mWebView = new TutorialWebView(this,videoView);
+      mWebView.load(URL+mURL);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -189,6 +189,7 @@ public class TutorialActivity extends AppCompatActivity
       super.onPause();
       TutorialSurfaceView view = findViewById(R.id.tutorialSurfaceView);
       view.onPause();
+      mWebView.onPause();
       DistortedLibrary.onPause(1);
       }
 
diff --git a/src/main/java/org/distorted/tutorial/TutorialList.java b/src/main/java/org/distorted/tutorial/TutorialList.java
index 7f55c8b4..bf68feaa 100644
--- a/src/main/java/org/distorted/tutorial/TutorialList.java
+++ b/src/main/java/org/distorted/tutorial/TutorialList.java
@@ -34,6 +34,7 @@ public enum TutorialList
   CUBE3 ( ObjectList.CUBE, 3,
           new String[][] {
                           {"gb","-8ohoCKN0Zw","How to Solve a Rubik's Cube","Z3"},
+                          {"pl","cBU9Y729nQM","Jak ułożyć kostkę Rubika 3x3x3","DżoDżo"},
                          }
         ),
 
diff --git a/src/main/java/org/distorted/tutorial/TutorialWebView.java b/src/main/java/org/distorted/tutorial/TutorialWebView.java
index cbc99e04..a551901c 100644
--- a/src/main/java/org/distorted/tutorial/TutorialWebView.java
+++ b/src/main/java/org/distorted/tutorial/TutorialWebView.java
@@ -102,6 +102,13 @@ public class TutorialWebView
       return returnString.toString();
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public void onPause()
+      {
+      mWebView.onPause();
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void reload()
diff --git a/src/main/res/layout/dialog_tutorial_row.xml b/src/main/res/layout/dialog_tutorial_row.xml
index 78b162ac..d47f1a52 100644
--- a/src/main/res/layout/dialog_tutorial_row.xml
+++ b/src/main/res/layout/dialog_tutorial_row.xml
@@ -2,9 +2,9 @@
 <Button xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/tutorialRowButton"
     android:layout_width="match_parent"
-    android:layout_height="100dp"
-    android:paddingStart="5dp"
-    android:paddingEnd="5dp"
-    android:maxLines="1"
-    android:gravity="center"/>
-
+    android:layout_height="wrap_content"
+    android:paddingRight="15dp"
+    android:paddingLeft="15dp"
+    android:singleLine="true"
+    android:textAllCaps="false"
+    android:gravity="center"/>
\ No newline at end of file
