commit d2f9fa0d8f5ee569fa97b9964810f4a720bd08b5
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Mar 10 17:59:06 2023 +0100

    Dialog About.

diff --git a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
index 30dc81cb..9ea9c5f3 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogAbout.java
@@ -10,16 +10,20 @@
 package org.distorted.dialogs;
 
 import android.app.Dialog;
+import android.content.Intent;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.net.Uri;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.fragment.app.FragmentActivity;
 
+import org.distorted.main.BuildConfig;
 import org.distorted.main.R;
 import org.distorted.main.RubikActivity;
 
@@ -109,6 +113,67 @@ public class RubikDialogAbout extends RubikDialogAbstract
     newV.setText(WHATS_NEW);
     TextView comV = view.findViewById(R.id.coming_message);
     comV.setText(WHATS_COMING);
+
+    LinearLayout layoutShare = view.findViewById(R.id.about_share_layout);
+
+    layoutShare.setOnClickListener(new View.OnClickListener()
+       {
+       @Override
+       public void onClick(View v)
+         {
+         share(act);
+         }
+       });
+
+    LinearLayout layoutEmail = view.findViewById(R.id.about_email_layout);
+
+    layoutEmail.setOnClickListener(new View.OnClickListener()
+       {
+       @Override
+       public void onClick(View v)
+         {
+         email(act);
+         }
+       });
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void share(FragmentActivity act)
+    {
+    Resources res = act.getResources();
+    String name = res.getString(R.string.app_name);
+
+    Intent intent = new Intent();
+    intent.setAction(Intent.ACTION_SEND);
+    intent.putExtra(Intent.EXTRA_TEXT,
+    name+": https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID);
+    intent.setType("text/plain");
+
+    if (intent.resolveActivity(act.getPackageManager()) != null)
+      {
+      startActivity(intent);
+      }
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void email(FragmentActivity act)
+    {
+    Resources res = act.getResources();
+    String[] email = { res.getString(R.string.email_address) };
+    String version = findCurrentVersion((RubikActivity)act);
+    String name = res.getString(R.string.app_name);
+
+    Intent intent = new Intent(Intent.ACTION_SENDTO);
+    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
+    intent.putExtra(Intent.EXTRA_EMAIL, email);
+    intent.putExtra(Intent.EXTRA_SUBJECT, name+" "+version);
+
+    if (intent.resolveActivity(act.getPackageManager()) != null)
+      {
+      startActivity(intent);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/res/layout/dialog_about.xml b/src/main/res/layout/dialog_about.xml
index 2992071a..baaf0095 100644
--- a/src/main/res/layout/dialog_about.xml
+++ b/src/main/res/layout/dialog_about.xml
@@ -99,6 +99,7 @@
                android:layout_height="wrap_content"
                android:gravity="start"
                android:textSize="14sp"
+               android:autoLink="email"
                android:text="@string/email_address"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
