commit 5560eea91a8ed72dca5eadbfb2e7b123a7dff400
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri May 10 16:06:38 2019 +0100

    Progress with UI.

diff --git a/src/main/java/org/distorted/magic/RubikAbout.java b/src/main/java/org/distorted/magic/RubikAbout.java
new file mode 100644
index 00000000..3d6032a5
--- /dev/null
+++ b/src/main/java/org/distorted/magic/RubikAbout.java
@@ -0,0 +1,61 @@
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Copyright 2019 Leszek Koltunski                                                               //
+//                                                                                               //
+// This file is part of Distorted.                                                               //
+//                                                                                               //
+// Distorted is free software: you can redistribute it and/or modify                             //
+// it under the terms of the GNU General Public License as published by                          //
+// the Free Software Foundation, either version 2 of the License, or                             //
+// (at your option) any later version.                                                           //
+//                                                                                               //
+// Distorted is distributed in the hope that it will be useful,                                  //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
+// GNU General Public License for more details.                                                  //
+//                                                                                               //
+// You should have received a copy of the GNU General Public License                             //
+// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+package org.distorted.magic;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.FragmentActivity;
+import android.support.v7.app.AlertDialog;
+import android.support.v7.app.AppCompatDialogFragment;
+import android.view.LayoutInflater;
+import android.view.View;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+public class RubikAbout extends AppCompatDialogFragment
+  {
+  @NonNull
+  @Override
+  public Dialog onCreateDialog(Bundle savedInstanceState)
+    {
+    FragmentActivity act = getActivity();
+    AlertDialog.Builder builder = new AlertDialog.Builder(act);
+
+    builder.setTitle(R.string.app_version);
+    builder.setIcon(R.drawable.button3);
+    builder.setCancelable(false);
+    builder.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener()
+      {
+      @Override
+      public void onClick(DialogInterface dialog, int which)
+        {
+
+        }
+      });
+
+    LayoutInflater inflater = act.getLayoutInflater();
+    final View view = inflater.inflate(R.layout.about, null);
+    builder.setView(view);
+
+    return builder.create();
+    }
+  }
diff --git a/src/main/java/org/distorted/magic/RubikActivity.java b/src/main/java/org/distorted/magic/RubikActivity.java
index ff612916..43af0463 100644
--- a/src/main/java/org/distorted/magic/RubikActivity.java
+++ b/src/main/java/org/distorted/magic/RubikActivity.java
@@ -121,10 +121,10 @@ public class RubikActivity extends AppCompatActivity implements RubikSettings.On
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    public void Credits(View v)
+    public void About(View v)
       {
-      RubikCredits credits = new RubikCredits();
-      credits.show(getSupportFragmentManager(), null);
+      RubikAbout about = new RubikAbout();
+      about.show(getSupportFragmentManager(), null);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/magic/RubikCredits.java b/src/main/java/org/distorted/magic/RubikCredits.java
deleted file mode 100644
index 64ecd857..00000000
--- a/src/main/java/org/distorted/magic/RubikCredits.java
+++ /dev/null
@@ -1,61 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Copyright 2019 Leszek Koltunski                                                               //
-//                                                                                               //
-// This file is part of Distorted.                                                               //
-//                                                                                               //
-// Distorted is free software: you can redistribute it and/or modify                             //
-// it under the terms of the GNU General Public License as published by                          //
-// the Free Software Foundation, either version 2 of the License, or                             //
-// (at your option) any later version.                                                           //
-//                                                                                               //
-// Distorted is distributed in the hope that it will be useful,                                  //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
-// GNU General Public License for more details.                                                  //
-//                                                                                               //
-// You should have received a copy of the GNU General Public License                             //
-// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-package org.distorted.magic;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.FragmentActivity;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatDialogFragment;
-import android.view.LayoutInflater;
-import android.view.View;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-public class RubikCredits extends AppCompatDialogFragment
-  {
-  @NonNull
-  @Override
-  public Dialog onCreateDialog(Bundle savedInstanceState)
-    {
-    FragmentActivity act = getActivity();
-    AlertDialog.Builder builder = new AlertDialog.Builder(act);
-
-    builder.setTitle(R.string.app_name);
-    builder.setIcon(R.drawable.logo);
-    builder.setCancelable(false);
-    builder.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener()
-      {
-      @Override
-      public void onClick(DialogInterface dialog, int which)
-        {
-
-        }
-      });
-
-    LayoutInflater inflater = act.getLayoutInflater();
-    final View view = inflater.inflate(R.layout.credits, null);
-    builder.setView(view);
-
-    return builder.create();
-    }
-  }
diff --git a/src/main/java/org/distorted/magic/RubikSettings.java b/src/main/java/org/distorted/magic/RubikSettings.java
index 1f7c7c26..dcebeac9 100644
--- a/src/main/java/org/distorted/magic/RubikSettings.java
+++ b/src/main/java/org/distorted/magic/RubikSettings.java
@@ -231,10 +231,12 @@ public class RubikSettings extends AppCompatDialogFragment implements SeekBar.On
       switch (bar.getId())
         {
         case R.id.appearDuration   : mAppearPos   = progress;
-                                     mAppearDuration.setText(RubikActivity.translateDuration(mAppearPos)+" ms");
+                                     int appear_ms= RubikActivity.translateDuration(mAppearPos);
+                                     mAppearDuration.setText(getString(R.string.ms_placeholder,appear_ms));
                                      break;
         case R.id.disappearDuration: mDisappearPos= progress;
-                                     mDisappearDuration.setText(RubikActivity.translateDuration(mDisappearPos)+" ms");
+                                     int disappear_ms= RubikActivity.translateDuration(mDisappearPos);
+                                     mDisappearDuration.setText(getString(R.string.ms_placeholder,disappear_ms));
                                      break;
         }
       }
diff --git a/src/main/res/layout/about.xml b/src/main/res/layout/about.xml
new file mode 100644
index 00000000..720c6cff
--- /dev/null
+++ b/src/main/res/layout/about.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:gravity="center|fill_horizontal"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:layout_marginTop="20dp"
+        android:background="@color/grey"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="fill_parent"
+            android:layout_weight="0.40"
+            android:layout_marginTop="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginBottom="10dp"
+            android:text="@string/credits1"/>
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="fill_parent"
+            android:layout_weight="0.60"
+            android:layout_marginBottom="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:linksClickable="true"
+            android:autoLink="web"
+            android:text="@string/credits2"/>
+
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/src/main/res/layout/credits.xml b/src/main/res/layout/credits.xml
deleted file mode 100644
index 6cf7c843..00000000
--- a/src/main/res/layout/credits.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center_horizontal"
-    android:orientation="vertical">
-
-
-    <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:gravity="center|fill_horizontal"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/textView1"
-            android:layout_width="match_parent"
-            android:layout_height="fill_parent"
-            android:layout_weight="0.33"
-            android:layout_marginBottom="10dp"
-            android:layout_marginTop="50dp"
-            android:layout_marginLeft="20dp"
-            android:layout_marginRight="20dp"
-            android:text="@string/credits1"/>
-
-        <TextView
-            android:id="@+id/textView2"
-            android:layout_width="match_parent"
-            android:layout_height="fill_parent"
-            android:layout_weight="0.33"
-            android:layout_marginBottom="10dp"
-            android:layout_marginTop="10dp"
-            android:layout_marginLeft="20dp"
-            android:layout_marginRight="20dp"
-            android:text="@string/credits2"/>
-
-        <TextView
-            android:id="@+id/textView3"
-            android:layout_width="match_parent"
-            android:layout_height="fill_parent"
-            android:layout_weight="0.33"
-            android:layout_marginBottom="20dp"
-            android:layout_marginTop="10dp"
-            android:layout_marginLeft="20dp"
-            android:layout_marginRight="20dp"
-            android:text="@string/credits3"/>
-
-    </LinearLayout>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/src/main/res/layout/main.xml b/src/main/res/layout/main.xml
index 026e4849..3dee7f07 100644
--- a/src/main/res/layout/main.xml
+++ b/src/main/res/layout/main.xml
@@ -48,14 +48,14 @@
             android:src="@drawable/button4"/>
 
         <Button
-            android:id="@+id/rubikCredits"
+            android:id="@+id/rubikAbout"
             android:layout_width="wrap_content"
             android:layout_height="64dp"
             android:layout_weight="0.5"
-            android:onClick="Credits"
+            android:onClick="About"
             android:paddingLeft="5dp"
             android:paddingRight="5dp"
-            android:text="@string/credits" />
+            android:text="@string/about" />
 
     </LinearLayout>
 
diff --git a/src/main/res/layout/settings.xml b/src/main/res/layout/settings.xml
index ac2d4650..c98b1d4d 100644
--- a/src/main/res/layout/settings.xml
+++ b/src/main/res/layout/settings.xml
@@ -7,7 +7,7 @@
 
     <TextView
         android:layout_width="fill_parent"
-        android:layout_height="64dp"
+        android:layout_height="48dp"
         android:paddingStart="15dp"
         android:paddingEnd="15dp"
         android:gravity="start|center"
@@ -16,65 +16,76 @@
 
     <LinearLayout
         android:layout_width="fill_parent"
-        android:layout_height="40dp"
-        android:gravity="center|fill_horizontal"
-        android:orientation="horizontal">
-
-        <TextView
-            android:layout_weight="0.25"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingStart="5dp"
-            android:paddingEnd="5dp"
-            android:gravity="start|center"
-            android:text="@string/duration"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <TextView
-            android:id="@+id/disappearDurationText"
-            android:layout_weight="0.25"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingStart="5dp"
-            android:paddingEnd="5dp"
-            android:gravity="end|center"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <SeekBar
-            android:id="@+id/disappearDuration"
-            android:layout_weight="0.5"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp" />
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="40dp"
+        android:layout_height="fill_parent"
+        android:layout_weight="0.5"
         android:gravity="center|fill_horizontal"
-        android:orientation="horizontal">
-
-        <TextView
-            android:layout_weight="0.5"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingStart="5dp"
-            android:paddingEnd="5dp"
-            android:gravity="start|center"
-            android:text="@string/type"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <Spinner
-            android:id="@+id/disappearType"
-            android:layout_weight="0.5"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:textAlignment="center"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp" />
-
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@color/grey"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="36dp"
+            android:gravity="center|fill_horizontal"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_weight="0.2"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingStart="5dp"
+                android:paddingEnd="5dp"
+                android:gravity="start|center"
+                android:text="@string/duration"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+            <TextView
+                android:id="@+id/disappearDurationText"
+                android:layout_weight="0.2"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingStart="5dp"
+                android:paddingEnd="5dp"
+                android:gravity="end|center"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+            <SeekBar
+                android:id="@+id/disappearDuration"
+                android:layout_weight="0.6"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="36dp"
+            android:gravity="center|fill_horizontal"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_weight="0.4"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingStart="5dp"
+                android:paddingEnd="5dp"
+                android:gravity="start|center"
+                android:text="@string/type"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+            <Spinner
+                android:id="@+id/disappearType"
+                android:layout_weight="0.6"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:textAlignment="center"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp" />
+
+        </LinearLayout>
     </LinearLayout>
 
     <TextView
@@ -88,65 +99,77 @@
 
     <LinearLayout
         android:layout_width="fill_parent"
-        android:layout_height="40dp"
+        android:layout_height="fill_parent"
+        android:layout_weight="0.5"
         android:gravity="center|fill_horizontal"
-        android:orientation="horizontal">
-
-        <TextView
-            android:layout_weight="0.25"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingStart="5dp"
-            android:paddingEnd="5dp"
-            android:gravity="start|center"
-            android:text="@string/duration"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <TextView
-            android:id="@+id/appearDurationText"
-            android:layout_weight="0.25"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingStart="5dp"
-            android:paddingEnd="5dp"
-            android:gravity="end|center"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <SeekBar
-            android:id="@+id/appearDuration"
-            android:layout_weight="0.5"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp" />
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="40dp"
-        android:gravity="center|fill_horizontal"
-        android:orientation="horizontal">
-
-        <TextView
-            android:layout_weight="0.5"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:paddingStart="5dp"
-            android:paddingEnd="5dp"
-            android:gravity="start|center"
-            android:text="@string/type"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <Spinner
-            android:id="@+id/appearType"
-            android:layout_weight="0.5"
-            android:layout_width="0dp"
-            android:layout_height="fill_parent"
-            android:textAlignment="center"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp" />
-
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:layout_marginBottom="10dp"
+        android:background="@color/grey"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="36dp"
+            android:gravity="center|fill_horizontal"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_weight="0.2"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingStart="5dp"
+                android:paddingEnd="5dp"
+                android:gravity="start|center"
+                android:text="@string/duration"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+            <TextView
+                android:id="@+id/appearDurationText"
+                android:layout_weight="0.2"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingStart="5dp"
+                android:paddingEnd="5dp"
+                android:gravity="end|center"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+            <SeekBar
+                android:id="@+id/appearDuration"
+                android:layout_weight="0.6"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="36dp"
+            android:gravity="center|fill_horizontal"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_weight="0.4"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:paddingStart="5dp"
+                android:paddingEnd="5dp"
+                android:gravity="start|center"
+                android:text="@string/type"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+            <Spinner
+                android:id="@+id/appearType"
+                android:layout_weight="0.6"
+                android:layout_width="0dp"
+                android:layout_height="fill_parent"
+                android:textAlignment="center"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp" />
+
+        </LinearLayout>
     </LinearLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml
index 37d5b6d6..1993d3a3 100644
--- a/src/main/res/values/colors.xml
+++ b/src/main/res/values/colors.xml
@@ -4,4 +4,5 @@
     <color name="colorPrimaryDark">#00574B</color>
     <color name="colorAccent">#D81B60</color>
     <color name="red">#ffff0000</color>
+    <color name="grey">#ff333333</color>
 </resources>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 1339a57b..0030c8cd 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,17 +1,18 @@
 <resources>
     <string name="app_name">Magic Cube</string>
+    <string name="app_version">Magic Cube v1.0.0</string>
     <string name="distorted">DISTORTED</string>
     <string name="scramble">Scramble</string>
     <string name="solve">Solve</string>
     <string name="settings">Settings</string>
-    <string name="credits">Credits</string>
+    <string name="about">About</string>
     <string name="save">SAVE</string>
     <string name="ok">OK</string>
-    <string name="appear">Appear Effects</string>
-    <string name="disappear">Disappear Effects</string>
+    <string name="appear">New Cube Appear Effect:</string>
+    <string name="disappear">Old Cube Disappear Effect:</string>
     <string name="duration">Duration:</string>
     <string name="type">Type:</string>
     <string name="credits1">Open Source app developed using the Distorted graphics library. </string>
-    <string name="credits2">Code, tutorials, how to write your own graphics effect: http://www.distorted.org/cube</string>
-    <string name="credits3">Distorted.org 2019</string>
+    <string name="credits2">Code, tutorials, learn how to write your own graphics effect: <a href="http://www.distorted.org/cube">Distorted.org</a></string>
+    <string name="ms_placeholder">%1$d ms</string>
 </resources>
