diff --git a/app-android/app/src/main/AndroidManifest.xml b/app-android/app/src/main/AndroidManifest.xml index 6ac0cc9..8e883cb 100644 --- a/app-android/app/src/main/AndroidManifest.xml +++ b/app-android/app/src/main/AndroidManifest.xml @@ -9,6 +9,8 @@ android:targetSdkVersion="22" /> + + diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java index ce92d14..0461779 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java @@ -1,15 +1,18 @@ package at.bitfire.gfxtablet; -import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; +import android.database.Cursor; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; +import android.provider.MediaStore; import android.support.v7.app.ActionBarActivity; -import android.util.Log; +import android.support.v7.widget.PopupMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -17,15 +20,20 @@ import android.view.WindowManager; import android.widget.Toast; public class CanvasActivity extends ActionBarActivity implements View.OnSystemUiVisibilityChangeListener { + private static int RESULT_LOAD_IMAGE = 1; + NetworkClient netClient; CanvasView canvas; + SharedPreferences preferences; boolean fullScreen = false; @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + preferences = PreferenceManager.getDefaultSharedPreferences(this); netClient = new NetworkClient(PreferenceManager.getDefaultSharedPreferences(this)); new Thread(netClient).start(); @@ -44,24 +52,25 @@ public class CanvasActivity extends ActionBarActivity implements View.OnSystemUi protected void onResume() { super.onResume(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - if (prefs.getBoolean(SettingsActivity.KEY_KEEP_DISPLAY_ACTIVE, true)) + if (preferences.getBoolean(SettingsActivity.KEY_KEEP_DISPLAY_ACTIVE, true)) getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); else getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + + showTemplateImage(); } - @Override - protected void onStop() { - netClient.getQueue().add(new NetEvent(NetEvent.Type.TYPE_DISCONNECT)); + @Override + protected void onStop() { + netClient.getQueue().add(new NetEvent(NetEvent.Type.TYPE_DISCONNECT)); super.onStop(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.activity_canvas, menu); - return true; - } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.activity_canvas, menu); + return true; + } @Override public void onBackPressed() { @@ -72,12 +81,12 @@ public class CanvasActivity extends ActionBarActivity implements View.OnSystemUi } public void showAbout(MenuItem item) { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(("https://rfc2822.github.io/GfxTablet/")))); - } - - public void showSettings(MenuItem item) { - startActivityForResult(new Intent(this, SettingsActivity.class), 0); - } + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(("https://rfc2822.github.io/GfxTablet/")))); + } + + public void showSettings(MenuItem item) { + startActivityForResult(new Intent(this, SettingsActivity.class), 0); + } public void switchFullScreen(MenuItem item) { @@ -107,6 +116,63 @@ public class CanvasActivity extends ActionBarActivity implements View.OnSystemUi } + private String getTemplateImagePath() { + return preferences.getString(SettingsActivity.KEY_TEMPLATE_IMAGE, null); + } + + public void setTemplateImage(MenuItem item) { + if (getTemplateImagePath() == null) + selectTemplateImage(item); + else { + // template image already set, show popup + PopupMenu popup = new PopupMenu(this, findViewById(R.id.menu_set_template_image)); + popup.getMenuInflater().inflate(R.menu.set_template_image, popup.getMenu()); + popup.show(); + } + } + + public void selectTemplateImage(MenuItem item) { + Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(i, RESULT_LOAD_IMAGE); + } + + public void clearTemplateImage(MenuItem item) { + preferences.edit().remove(SettingsActivity.KEY_TEMPLATE_IMAGE).commit(); + showTemplateImage(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) { + Uri selectedImage = data.getData(); + String[] filePathColumn = { MediaStore.Images.Media.DATA }; + + Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); + try { + cursor.moveToFirst(); + + int columnIndex = cursor.getColumnIndex(filePathColumn[0]); + String picturePath = cursor.getString(columnIndex); + + preferences.edit().putString(SettingsActivity.KEY_TEMPLATE_IMAGE, picturePath).commit(); + showTemplateImage(); + } finally { + cursor.close(); + } + } else + super.onActivityResult(requestCode, resultCode, data); + } + + public void showTemplateImage() { + String picturePath = preferences.getString(SettingsActivity.KEY_TEMPLATE_IMAGE, null); + if (picturePath != null) { + Drawable drawable = BitmapDrawable.createFromPath(picturePath); + getWindow().setBackgroundDrawable(drawable); + } else + getWindow().setBackgroundDrawableResource(android.R.drawable.screen_background_light); + } + + private class ConfigureNetworkingTask extends AsyncTask { @Override protected Boolean doInBackground(Void... params) { diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java index 2203072..29baea8 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java @@ -9,7 +9,8 @@ public class SettingsActivity extends ActionBarActivity { KEY_PREF_HOST = "host_preference", KEY_PREF_STYLUS_ONLY = "stylus_only_preference", KEY_DARK_CANVAS = "dark_canvas_preference", - KEY_KEEP_DISPLAY_ACTIVE = "keep_display_active_preference"; + KEY_KEEP_DISPLAY_ACTIVE = "keep_display_active_preference", + KEY_TEMPLATE_IMAGE = "key_template_image"; @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png new file mode 100644 index 0000000..3fb1134 Binary files /dev/null and b/app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png differ diff --git a/app-android/app/src/main/res/drawable-xhdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-xhdpi/ic_action_picture.png new file mode 100644 index 0000000..a41fb71 Binary files /dev/null and b/app-android/app/src/main/res/drawable-xhdpi/ic_action_picture.png differ diff --git a/app-android/app/src/main/res/drawable-xxhdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-xxhdpi/ic_action_picture.png new file mode 100644 index 0000000..eeb5a8f Binary files /dev/null and b/app-android/app/src/main/res/drawable-xxhdpi/ic_action_picture.png differ diff --git a/app-android/app/src/main/res/menu/activity_canvas.xml b/app-android/app/src/main/res/menu/activity_canvas.xml index ac5cfb5..01a1e19 100644 --- a/app-android/app/src/main/res/menu/activity_canvas.xml +++ b/app-android/app/src/main/res/menu/activity_canvas.xml @@ -1,6 +1,14 @@ - + + + + + + + + + \ No newline at end of file diff --git a/app-android/app/src/main/res/values/styles.xml b/app-android/app/src/main/res/values/styles.xml index a5343bf..2bccbc3 100644 --- a/app-android/app/src/main/res/values/styles.xml +++ b/app-android/app/src/main/res/values/styles.xml @@ -1,8 +1,8 @@