1
0
Fork 0
mirror of https://github.com/rfc2822/GfxTablet synced 2025-10-03 09:39:16 +02:00

First version of template image support

This commit is contained in:
Ricki Hirner 2015-06-28 18:57:36 +02:00
parent e29a9b691f
commit fb20c3f5d2
9 changed files with 118 additions and 27 deletions

View file

@ -9,6 +9,8 @@
android:targetSdkVersion="22" /> android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.INTERNET" /> <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="stylus"/>
<uses-configuration android:reqTouchScreen="finger"/> <uses-configuration android:reqTouchScreen="finger"/>

View file

@ -1,15 +1,18 @@
package at.bitfire.gfxtablet; package at.bitfire.gfxtablet;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarActivity;
import android.util.Log; import android.support.v7.widget.PopupMenu;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@ -17,9 +20,12 @@ import android.view.WindowManager;
import android.widget.Toast; import android.widget.Toast;
public class CanvasActivity extends ActionBarActivity implements View.OnSystemUiVisibilityChangeListener { public class CanvasActivity extends ActionBarActivity implements View.OnSystemUiVisibilityChangeListener {
private static int RESULT_LOAD_IMAGE = 1;
NetworkClient netClient; NetworkClient netClient;
CanvasView canvas; CanvasView canvas;
SharedPreferences preferences;
boolean fullScreen = false; boolean fullScreen = false;
@ -27,6 +33,8 @@ public class CanvasActivity extends ActionBarActivity implements View.OnSystemUi
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
netClient = new NetworkClient(PreferenceManager.getDefaultSharedPreferences(this)); netClient = new NetworkClient(PreferenceManager.getDefaultSharedPreferences(this));
new Thread(netClient).start(); new Thread(netClient).start();
@ -44,11 +52,12 @@ public class CanvasActivity extends ActionBarActivity implements View.OnSystemUi
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (preferences.getBoolean(SettingsActivity.KEY_KEEP_DISPLAY_ACTIVE, true))
if (prefs.getBoolean(SettingsActivity.KEY_KEEP_DISPLAY_ACTIVE, true))
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else else
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
showTemplateImage();
} }
@Override @Override
@ -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> { private class ConfigureNetworkingTask extends AsyncTask<Void, Void, Boolean> {
@Override @Override
protected Boolean doInBackground(Void... params) { protected Boolean doInBackground(Void... params) {

View file

@ -9,7 +9,8 @@ public class SettingsActivity extends ActionBarActivity {
KEY_PREF_HOST = "host_preference", KEY_PREF_HOST = "host_preference",
KEY_PREF_STYLUS_ONLY = "stylus_only_preference", KEY_PREF_STYLUS_ONLY = "stylus_only_preference",
KEY_DARK_CANVAS = "dark_canvas_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 @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

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

View file

@ -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"> 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 <item
android:id="@+id/menu_fullscreen" android:id="@+id/menu_fullscreen"
android:icon="@drawable/ic_arrow_expand_white_48dp" android:icon="@drawable/ic_arrow_expand_white_48dp"
@ -11,7 +19,7 @@
<item <item
android:icon="@drawable/ic_settings_white_48dp" android:icon="@drawable/ic_settings_white_48dp"
android:onClick="showSettings" android:onClick="showSettings"
app:showAsAction="ifRoom" app:showAsAction="never"
android:title="@string/menu_settings"/> android:title="@string/menu_settings"/>
<item <item

View 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>

View file

@ -1,8 +1,8 @@
<resources> <resources>
<style name="BaseTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> <style name="BaseTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">#4825d0</item> <item name="colorPrimary">#8f5ad1</item>
<item name="colorPrimaryDark">#755a8e</item> <item name="colorPrimaryDark">#5100b5</item>
<item name="colorAccent">#f32eac</item> <item name="colorAccent">#f32eac</item>
</style> </style>