From 2dba2a404295bea81a0f02bd7d49f18f50142a85 Mon Sep 17 00:00:00 2001 From: rfc2822 Date: Fri, 11 Oct 2013 14:40:14 +0200 Subject: [PATCH] Optional full-screen support --- app-android/AndroidManifest.xml | 6 ++-- app-android/IDEAS | 2 -- app-android/res/values/strings.xml | 2 ++ app-android/res/xml/drawing_preferences.xml | 4 +-- .../at/bitfire/gfxtablet/CanvasActivity.java | 36 +++++++++++++------ .../src/at/bitfire/gfxtablet/NetEvent.java | 1 + .../bitfire/gfxtablet/SettingsActivity.java | 16 ++++++++- 7 files changed, 49 insertions(+), 18 deletions(-) diff --git a/app-android/AndroidManifest.xml b/app-android/AndroidManifest.xml index 9ff57d7..0ce82e0 100644 --- a/app-android/AndroidManifest.xml +++ b/app-android/AndroidManifest.xml @@ -1,14 +1,16 @@ + android:versionCode="3" + android:versionName="1.2" > + + Sense stylus only Fullscreen About / Help + Title bar will only be hidden when hardware menu button is present + Ignores touch events from fingers diff --git a/app-android/res/xml/drawing_preferences.xml b/app-android/res/xml/drawing_preferences.xml index 8ea8f03..aeac1bc 100644 --- a/app-android/res/xml/drawing_preferences.xml +++ b/app-android/res/xml/drawing_preferences.xml @@ -1,5 +1,5 @@ - - + + diff --git a/app-android/src/at/bitfire/gfxtablet/CanvasActivity.java b/app-android/src/at/bitfire/gfxtablet/CanvasActivity.java index 2e74b52..ea128e2 100644 --- a/app-android/src/at/bitfire/gfxtablet/CanvasActivity.java +++ b/app-android/src/at/bitfire/gfxtablet/CanvasActivity.java @@ -1,18 +1,18 @@ package at.bitfire.gfxtablet; -import at.bitfire.gfxtablet.R; - -import android.net.Uri; -import android.os.Bundle; -import android.preference.PreferenceManager; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; +import android.os.Bundle; +import android.preference.PreferenceManager; import android.view.Menu; import android.view.MenuItem; +import android.view.ViewConfiguration; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; +import android.widget.Toast; public class CanvasActivity extends Activity { CanvasView canvas; @@ -27,10 +27,14 @@ public class CanvasActivity extends Activity { PreferenceManager.setDefaultValues(this, R.xml.drawing_preferences, false); settings = PreferenceManager.getDefaultSharedPreferences(this); - if (settings.getBoolean(SettingsActivity.KEY_PREF_FULLSCREEN, true)) { - this.requestWindowFeature(Window.FEATURE_NO_TITLE); - this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); + if (settings.getBoolean(SettingsActivity.KEY_PREF_FULLSCREEN, false)) { + if (ViewConfiguration.get(this).hasPermanentMenuKey()) + requestWindowFeature(Window.FEATURE_NO_TITLE); + else + Toast.makeText(this, "Limited full-screen due to missing hardware menu button", Toast.LENGTH_LONG).show(); + + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); } setContentView(R.layout.activity_canvas); @@ -55,10 +59,20 @@ public class CanvasActivity extends Activity { } public void showAbout(MenuItem item) { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(("http://rfc2822.github.com/GfxTablet")))); + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(("http://rfc2822.github.io/GfxTablet/")))); } public void showSettings(MenuItem item) { - startActivity(new Intent(CanvasActivity.this, SettingsActivity.class)); + startActivityForResult(new Intent(this, SettingsActivity.class), 0); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == SettingsActivity.RESULT_RESTART) { + finish(); + Intent i = new Intent(this, CanvasActivity.class); + i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } } } diff --git a/app-android/src/at/bitfire/gfxtablet/NetEvent.java b/app-android/src/at/bitfire/gfxtablet/NetEvent.java index 7940396..971067f 100644 --- a/app-android/src/at/bitfire/gfxtablet/NetEvent.java +++ b/app-android/src/at/bitfire/gfxtablet/NetEvent.java @@ -59,6 +59,7 @@ public class NetEvent { case TYPE_BUTTON: dos.writeByte(1); break; + default: } dos.writeShort(x); diff --git a/app-android/src/at/bitfire/gfxtablet/SettingsActivity.java b/app-android/src/at/bitfire/gfxtablet/SettingsActivity.java index e6e7510..aa8d76a 100644 --- a/app-android/src/at/bitfire/gfxtablet/SettingsActivity.java +++ b/app-android/src/at/bitfire/gfxtablet/SettingsActivity.java @@ -1,25 +1,34 @@ package at.bitfire.gfxtablet; +import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; import android.view.MenuItem; import java.util.List; import at.bitfire.gfxtablet.R; -public class SettingsActivity extends PreferenceActivity { +public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { + public static final int RESULT_RESTART = RESULT_FIRST_USER; + public static final String KEY_PREF_HOST = "host_preference", KEY_PREF_STYLUS_ONLY = "stylus_only_preference", KEY_PREF_FULLSCREEN = "fullscreen_preference"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayHomeAsUpEnabled(true); + + PreferenceManager.getDefaultSharedPreferences(this) + .registerOnSharedPreferenceChangeListener(this); } @Override @@ -34,6 +43,11 @@ public class SettingsActivity extends PreferenceActivity { return false; } + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (key.equals(SettingsActivity.KEY_PREF_FULLSCREEN)) + setResult(RESULT_RESTART); + } + public static class NetworkPrefsFragment extends PreferenceFragment { @Override