mirror of
https://github.com/rfc2822/GfxTablet
synced 2025-10-03 01:29:17 +02:00
First version of template image support
This commit is contained in:
parent
e29a9b691f
commit
fb20c3f5d2
9 changed files with 118 additions and 27 deletions
|
@ -9,6 +9,8 @@
|
|||
android:targetSdkVersion="22" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
<uses-configuration android:reqTouchScreen="stylus"/>
|
||||
<uses-configuration android:reqTouchScreen="finger"/>
|
||||
|
||||
|
|
|
@ -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/"))));
|
||||
}
|
||||
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 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<Void, Void, Boolean> {
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
BIN
app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png
Normal file
BIN
app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 411 B |
Binary file not shown.
After Width: | Height: | Size: 715 B |
Binary file not shown.
After Width: | Height: | Size: 929 B |
|
@ -1,6 +1,14 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<menu xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_set_template_image"
|
||||
android:icon="@drawable/ic_action_picture"
|
||||
android:onClick="setTemplateImage"
|
||||
app:showAsAction="always"
|
||||
android:title="Set template image"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_fullscreen"
|
||||
android:icon="@drawable/ic_arrow_expand_white_48dp"
|
||||
|
@ -11,7 +19,7 @@
|
|||
<item
|
||||
android:icon="@drawable/ic_settings_white_48dp"
|
||||
android:onClick="showSettings"
|
||||
app:showAsAction="ifRoom"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/menu_settings"/>
|
||||
|
||||
<item
|
||||
|
|
14
app-android/app/src/main/res/menu/set_template_image.xml
Normal file
14
app-android/app/src/main/res/menu/set_template_image.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_clear_template_image"
|
||||
android:onClick="clearTemplateImage"
|
||||
android:title="Clear template image"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_select_template_image"
|
||||
android:onClick="selectTemplateImage"
|
||||
android:title="Select another image"/>
|
||||
|
||||
</menu>
|
|
@ -1,8 +1,8 @@
|
|||
<resources>
|
||||
|
||||
<style name="BaseTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
|
||||
<item name="colorPrimary">#4825d0</item>
|
||||
<item name="colorPrimaryDark">#755a8e</item>
|
||||
<item name="colorPrimary">#8f5ad1</item>
|
||||
<item name="colorPrimaryDark">#5100b5</item>
|
||||
<item name="colorAccent">#f32eac</item>
|
||||
</style>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue