mirror of
https://github.com/peterosterlund2/droidfish.git
synced 2024-11-23 19:34:08 +01:00
DroidFish: Added new share options.
It is now possible to share a game as pgn, share a game as text, and share an image as png.
This commit is contained in:
parent
558a4abcea
commit
8fb58d9633
|
@ -123,5 +123,14 @@
|
|||
<activity android:name=".activities.EditOptions"
|
||||
android:configChanges="orientation|screenSize">
|
||||
</activity>
|
||||
</application>
|
||||
<provider
|
||||
android:name="android.support.v4.content.FileProvider"
|
||||
android:authorities="org.petero.droidfish.fileprovider"
|
||||
android:grantUriPermissions="true"
|
||||
android:exported="false">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/filepaths"/>
|
||||
</provider>
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
@ -33,8 +33,9 @@ you are not actively using the program.\
|
|||
<string name="copy_game">Copy Game to Clipboard</string>
|
||||
<string name="copy_position">Copy Position to Clipboard</string>
|
||||
<string name="paste">Paste from Clipboard</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="share_pgn_game">Share PGN game</string>
|
||||
<string name="share_game">Share Game</string>
|
||||
<string name="share_text">Share as Text</string>
|
||||
<string name="share_image">Share as Image</string>
|
||||
<string name="load_last_file">Load from last file</string>
|
||||
<string name="load_game">Load game from PGN file</string>
|
||||
<string name="load_position">Load position from file</string>
|
||||
|
|
3
DroidFish/res/xml/filepaths.xml
Normal file
3
DroidFish/res/xml/filepaths.xml
Normal file
|
@ -0,0 +1,3 @@
|
|||
<paths>
|
||||
<files-path path="images/" name="myimages"/>
|
||||
</paths>
|
|
@ -21,9 +21,11 @@ package org.petero.droidfish;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -97,6 +99,8 @@ import android.content.pm.ResolveInfo;
|
|||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.Resources.NotFoundException;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.StateListDrawable;
|
||||
import android.media.MediaPlayer;
|
||||
|
@ -108,7 +112,9 @@ import android.os.Handler;
|
|||
import android.os.Vibrator;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.ShareCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.support.v4.view.MotionEventCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.text.Html;
|
||||
|
@ -2217,10 +2223,12 @@ public class DroidFish extends Activity
|
|||
}
|
||||
|
||||
private final Dialog boardMenuDialog() {
|
||||
final int CLIPBOARD = 0;
|
||||
final int FILEMENU = 1;
|
||||
final int SHARE = 2;
|
||||
final int GET_FEN = 3;
|
||||
final int CLIPBOARD = 0;
|
||||
final int FILEMENU = 1;
|
||||
final int SHARE_GAME = 2;
|
||||
final int SHARE_TEXT = 3;
|
||||
final int SHARE_IMAG = 4;
|
||||
final int GET_FEN = 5;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<CharSequence>();
|
||||
|
@ -2229,7 +2237,9 @@ public class DroidFish extends Activity
|
|||
if (storageAvailable()) {
|
||||
lst.add(getString(R.string.option_file)); actions.add(FILEMENU);
|
||||
}
|
||||
lst.add(getString(R.string.share)); actions.add(SHARE);
|
||||
lst.add(getString(R.string.share_game)); actions.add(SHARE_GAME);
|
||||
lst.add(getString(R.string.share_text)); actions.add(SHARE_TEXT);
|
||||
lst.add(getString(R.string.share_image)); actions.add(SHARE_IMAG);
|
||||
if (hasFenProvider(getPackageManager())) {
|
||||
lst.add(getString(R.string.get_fen)); actions.add(GET_FEN);
|
||||
}
|
||||
|
@ -2239,19 +2249,22 @@ public class DroidFish extends Activity
|
|||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (finalActions.get(item)) {
|
||||
case CLIPBOARD: {
|
||||
case CLIPBOARD:
|
||||
showDialog(CLIPBOARD_DIALOG);
|
||||
break;
|
||||
}
|
||||
case FILEMENU: {
|
||||
case FILEMENU:
|
||||
removeDialog(FILE_MENU_DIALOG);
|
||||
showDialog(FILE_MENU_DIALOG);
|
||||
break;
|
||||
}
|
||||
case SHARE: {
|
||||
shareGame();
|
||||
case SHARE_GAME:
|
||||
shareGameOrText(true);
|
||||
break;
|
||||
case SHARE_TEXT:
|
||||
shareGameOrText(false);
|
||||
break;
|
||||
case SHARE_IMAG:
|
||||
shareImage();
|
||||
break;
|
||||
}
|
||||
case GET_FEN:
|
||||
getFen();
|
||||
break;
|
||||
|
@ -2262,15 +2275,50 @@ public class DroidFish extends Activity
|
|||
return alert;
|
||||
}
|
||||
|
||||
private final void shareGame() {
|
||||
private final void shareGameOrText(boolean game) {
|
||||
Intent i = new Intent(Intent.ACTION_SEND);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
||||
i.setType("text/plain");
|
||||
i.setType(game ? "application/x-chess-pgn" : "text/plain");
|
||||
i.putExtra(Intent.EXTRA_TEXT, ctrl.getPGN());
|
||||
try {
|
||||
startActivity(Intent.createChooser(i, getString(R.string.share_pgn_game)));
|
||||
startActivity(Intent.createChooser(i, getString(game ? R.string.share_game :
|
||||
R.string.share_text)));
|
||||
} catch (ActivityNotFoundException ex) {
|
||||
}
|
||||
}
|
||||
|
||||
private final void shareImage() {
|
||||
View v = findViewById(R.id.main);
|
||||
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
|
||||
Bitmap.Config.ARGB_8888);
|
||||
Canvas c = new Canvas(b);
|
||||
v.draw(c);
|
||||
File imgDir = new File(getFilesDir(), "images");
|
||||
imgDir.mkdirs();
|
||||
File file = new File(imgDir, "screenshot.png");
|
||||
try {
|
||||
OutputStream os = null;
|
||||
try {
|
||||
os = new FileOutputStream(file);
|
||||
b.compress(Bitmap.CompressFormat.PNG, 100, os);
|
||||
} finally {
|
||||
if (os != null)
|
||||
os.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
|
||||
String authority = "org.petero.droidfish.fileprovider";
|
||||
Uri uri = FileProvider.getUriForFile(this, authority, file);
|
||||
|
||||
Intent i = new Intent(Intent.ACTION_SEND);
|
||||
i.putExtra(Intent.EXTRA_STREAM, uri);
|
||||
i.setType("image/png");
|
||||
try {
|
||||
startActivity(Intent.createChooser(i, getString(R.string.share_image)));
|
||||
} catch (ActivityNotFoundException ex) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user