From f64df0412cef968a9357e09e1d41d1defab1bcfd Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Wed, 1 Jul 2015 23:03:53 +0200 Subject: [PATCH] Change template image logic --- app-android/app/build.gradle | 2 +- app-android/app/src/main/AndroidManifest.xml | 7 +- .../at/bitfire/gfxtablet/CanvasActivity.java | 101 ++++++++++++------ .../java/at/bitfire/gfxtablet/CanvasView.java | 55 ++++++++-- .../at/bitfire/gfxtablet/NetworkClient.java | 8 +- .../bitfire/gfxtablet/SettingsActivity.java | 4 +- .../res/drawable-hdpi/ic_action_picture.png | Bin 0 -> 771 bytes .../res/drawable-mdpi/ic_action_picture.png | Bin 411 -> 558 bytes .../res/drawable-xhdpi/ic_action_picture.png | Bin 715 -> 947 bytes .../res/drawable-xxhdpi/ic_action_picture.png | Bin 929 -> 1314 bytes .../src/main/res/layout/activity_canvas.xml | 29 +++++ .../src/main/res/layout/activity_no_host.xml | 15 --- .../src/main/res/layout/activity_settings.xml | 19 ++-- .../app/src/main/res/menu/activity_canvas.xml | 19 ++-- .../src/main/res/menu/set_template_image.xml | 4 +- .../app/src/main/res/values/strings.xml | 10 +- .../app/src/main/res/xml/preferences.xml | 2 +- app-android/build.gradle | 2 +- 18 files changed, 188 insertions(+), 89 deletions(-) create mode 100644 app-android/app/src/main/res/drawable-hdpi/ic_action_picture.png create mode 100644 app-android/app/src/main/res/layout/activity_canvas.xml delete mode 100644 app-android/app/src/main/res/layout/activity_no_host.xml diff --git a/app-android/app/build.gradle b/app-android/app/build.gradle index bab7253..6cc8923 100644 --- a/app-android/app/build.gradle +++ b/app-android/app/build.gradle @@ -19,5 +19,5 @@ android { } dependencies { - compile "com.android.support:appcompat-v7:21.0.+" + compile "com.android.support:appcompat-v7:22.+" } diff --git a/app-android/app/src/main/AndroidManifest.xml b/app-android/app/src/main/AndroidManifest.xml index 8e883cb..eaa6569 100644 --- a/app-android/app/src/main/AndroidManifest.xml +++ b/app-android/app/src/main/AndroidManifest.xml @@ -4,9 +4,7 @@ android:versionCode="4" android:versionName="1.3" > - + @@ -18,7 +16,8 @@ android:allowBackup="true" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme" - android:label="@string/app_name" > + android:label="@string/app_name" + android:largeHeap="true"> = 16) uiFlags ^= View.SYSTEM_UI_FLAG_FULLSCREEN; - if (Build.VERSION.SDK_INT >= 18) + if (Build.VERSION.SDK_INT >= 19) uiFlags ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setOnSystemUiVisibilityChangeListener(this); @@ -106,16 +130,21 @@ public void switchFullScreen(MenuItem item) { @Override public void onSystemUiVisibilityChange(int visibility) { + Log.i("GfxTablet", "System UI changed " + visibility); + + fullScreen = (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0; + // show/hide action bar according to full-screen mode - if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0) { + if (fullScreen) { CanvasActivity.this.getSupportActionBar().hide(); - fullScreen = true; Toast.makeText(CanvasActivity.this, "Press Back button to leave full-screen mode.", Toast.LENGTH_LONG).show(); } else CanvasActivity.this.getSupportActionBar().show(); } + // template image logic + private String getTemplateImagePath() { return preferences.getString(SettingsActivity.KEY_TEMPLATE_IMAGE, null); } @@ -143,6 +172,7 @@ public void clearTemplateImage(MenuItem item) { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; @@ -159,32 +189,41 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { } 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); + ImageView template = (ImageView)findViewById(R.id.canvas_template); + template.setImageDrawable(null); + + if (template.getVisibility() == View.VISIBLE) { + String picturePath = preferences.getString(SettingsActivity.KEY_TEMPLATE_IMAGE, null); + if (picturePath != null) + try { + // TODO load bitmap efficiently, for intended view size and display resolution + // https://developer.android.com/training/displaying-bitmaps/load-bitmap.html + final Drawable drawable = new BitmapDrawable(getResources(), picturePath); + template.setImageDrawable(drawable); + } catch (Exception e) { + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } + } } private class ConfigureNetworkingTask extends AsyncTask { @Override protected Boolean doInBackground(Void... params) { - return netClient.configureNetworking(); + return netClient.reconfigureNetworking(); } protected void onPostExecute(Boolean success) { - if (success) { - setContentView(canvas); + if (success) Toast.makeText(CanvasActivity.this, "Touch events will be sent to " + netClient.destAddress.getHostAddress() + ":" + NetworkClient.GFXTABLET_PORT, Toast.LENGTH_LONG).show(); - } else - setContentView(R.layout.activity_no_host); + + findViewById(R.id.canvas_template).setVisibility(success ? View.VISIBLE : View.GONE); + findViewById(R.id.canvas).setVisibility(success ? View.VISIBLE : View.GONE); + findViewById(R.id.canvas_message).setVisibility(success ? View.GONE : View.VISIBLE); } } diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java index a1866b8..74c72d1 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java @@ -5,6 +5,7 @@ import android.content.SharedPreferences; import android.graphics.Color; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; @@ -13,32 +14,63 @@ import at.bitfire.gfxtablet.NetEvent.Type; @SuppressLint("ViewConstructor") -public class CanvasView extends View { +public class CanvasView extends View implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "GfxTablet.CanvasView"; final SharedPreferences settings; - final NetworkClient netClient; + NetworkClient netClient; boolean acceptStylusOnly; int maxX, maxY; - public CanvasView(Context context, NetworkClient networkClient) { - super(context); - this.netClient = networkClient; - // process preferences + // setup + + public CanvasView(Context context, AttributeSet attributeSet) { + super(context, attributeSet); + + // view is disabled until a network client is set + setEnabled(false); + settings = PreferenceManager.getDefaultSharedPreferences(context); - acceptStylusOnly = settings.getBoolean(SettingsActivity.KEY_PREF_STYLUS_ONLY, false); + settings.registerOnSharedPreferenceChangeListener(this); + setBackground(); + setInputMethods(); } - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); + public void setNetworkClient(NetworkClient networkClient) { + netClient = networkClient; + setEnabled(true); + } + + + // settings + + protected void setBackground() { if (settings.getBoolean(SettingsActivity.KEY_DARK_CANVAS, false)) setBackgroundColor(Color.BLACK); else setBackgroundResource(R.drawable.bg_grid_pattern); } + protected void setInputMethods() { + acceptStylusOnly = settings.getBoolean(SettingsActivity.KEY_PREF_STYLUS_ONLY, false); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + switch (key) { + case SettingsActivity.KEY_PREF_STYLUS_ONLY: + setInputMethods(); + break; + case SettingsActivity.KEY_DARK_CANVAS: + setBackground(); + break; + } + } + + + // drawing + @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { Log.i(TAG, "Canvas size changed: " + w + "x" + h + " (before: " + oldw + "x" + oldh + ")"); @@ -65,7 +97,7 @@ public boolean onGenericMotionEvent(MotionEvent event) { } @Override - public boolean onTouchEvent(MotionEvent event) { + public boolean onTouchEvent(@NonNull MotionEvent event) { if (isEnabled()) { for (int ptr = 0; ptr < event.getPointerCount(); ptr++) if (!acceptStylusOnly || (event.getToolType(ptr) == MotionEvent.TOOL_TYPE_STYLUS)) { @@ -104,4 +136,5 @@ short normalizeY(float x) { short normalizePressure(float x) { return (short)(Math.min(Math.max(0, x), 2.0) * Short.MAX_VALUE/2.0); } + } diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkClient.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkClient.java index ad7e04d..c437725 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkClient.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkClient.java @@ -13,19 +13,19 @@ public class NetworkClient implements Runnable { - static int GFXTABLET_PORT = 40118; + static final int GFXTABLET_PORT = 40118; - LinkedBlockingQueue motionQueue = new LinkedBlockingQueue<>(); + final LinkedBlockingQueue motionQueue = new LinkedBlockingQueue<>(); LinkedBlockingQueue getQueue() { return motionQueue; } InetAddress destAddress; - SharedPreferences preferences; + final SharedPreferences preferences; NetworkClient(SharedPreferences preferences) { this.preferences = preferences; } - boolean configureNetworking() { + boolean reconfigureNetworking() { try { String hostName = preferences.getString(SettingsActivity.KEY_PREF_HOST, "unknown.invalid"); destAddress = InetAddress.getByName(hostName); 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 29baea8..d81257b 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 @@ -1,10 +1,10 @@ package at.bitfire.gfxtablet; -import android.app.Activity; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; -public class SettingsActivity extends ActionBarActivity { +public class SettingsActivity extends AppCompatActivity { public static final String KEY_PREF_HOST = "host_preference", KEY_PREF_STYLUS_ONLY = "stylus_only_preference", diff --git a/app-android/app/src/main/res/drawable-hdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-hdpi/ic_action_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..00216eab58720ce35d13377ebfc5417ceee25ead GIT binary patch literal 771 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!EX7WqAsj$Z!;#Vf4nJ zFn$4H#?8ze6M=$~C9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lHF&x> zhE&XXd&@dQBv7L5;rAVJN>VN&A}VnX-7KPu#ip%PN?JOVBdQ`>H(4K z%g5Y!T4JVXM7RrBOCJncW7i#Nxaekm+POJ%Z{Gc%S)6umW_kLwlW!V|&sjddlfZS2 z!Si{;KDn$J=Ut z(YlaHtdmMaBUFA*%#;4$bm?r!=cPfF3Z922&139uT$}yx3R9ZO-St)Hrf30m@le43{15(y&<9-q_Ze9*?wMR-RmA(ci+9V;NudYq z5&|!&G%UHW&o_eg-G!f*Y#DSscEw(d`gdtby=hzH^hwJaL^s`T*=xD|E|bj^ljvvN z`zNchHob9J-WaU9eZODXPPtWCj=tO>t%V7$mu_m6UF&aTC}UiIYdcfm@f+(KADmx% zAm@zVFUt%0f#r9b1vI+YjVctHp~MlptJa>MmH+qLw9pFRc<6oR+uj8)=hwaMn&-%V zyI;BL<~gP2ZZ<2YZx%@jKUC9B6tmSb+bxgt@ZEQPFT?XW#piY|`^B1LzHj65-?rhv P1k2#*>gTe~DWM4fCu>No literal 0 HcmV?d00001 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 index 3fb113454f2e3100649a70a2e13a4674725f92a4..5c994c622a10b3a9c41d4ba7beb10a97161b1416 100644 GIT binary patch delta 508 zcmVHl_&#^U_2T;dXcC+`GAhdF9MEGru=1v+zNo zP#9}MuR-+=@Nmdkn%D{<{EVtpmmEFjdu5$yaQOrLPQ0mqw&?&DswSHRwnGT_+s%`P zx({5hny)k)7m7e`ia>6PKyHdaZi+x|ia>6PfOJ+y#;&(R`|Cm@D%v0-fSmY97zJFpUhX_aYe~2@JXGi+2fMB ztiDyRrJNssjb~knZ|BBdsK=2VgkS2D9{YCH-E(z&>Z67%`*mH36oG?;7KrMhx^TMo zuKK>F?s>lggM9uj1FzI~z<1zTP2Ed%!#-ZJLBHP@fiBJM8-PV%OTC?Pz^MI+9{^v} zx!47xCIB!6ti=|OqCgTwAU9(#5c9nK delta 360 zcmV-u0hj)+1e*gPiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPN3k}x* z01ejxLMWSfkwz$g7)eAyR9J=W*Rg8DFc1dd`%k7dr4U1h(vqbCZ-!z?wx$jy@6f4h z31lm20wqt?(u)@vK81Cv0T2ZA&i0PIvc!a{vTg#VpG{$Jnea z%f-*yc}`%LF7YYpo2c^%cz_3Zz)=8W%tMkS*G>RZ%DJ_Fb{&S{#u#(+Z-6+CFO^cS zLWpMo0>Euu*BdG2{r)-tthJU!QS^RYj|N0h^uf&fTN866gjnZ!J|iMZ(==8}Z2>H* zs#ud;#FG4nJ zFwF*G#@ShEn}C9nC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l8+f`n zhE&XXd)K$aH&N#J$M?wwOZV(QT^+d~WzmKYVQ!m_I(2Od*fe7)@5HHVJT$p)YH)8l zD9|-YDRaZ7Nn1B19ekBu*w1l&PVxE5clBw1>`Z4{KezjSzvg}IyPf6BtP|28;F{^m zQwJxVWAy&qW0Yp&s~M|P{ozMf_jl%O?YQUlpVyu`__)Y7@u`KwhE>rQ-rF(COU+0& ziRScq_2pD4GtaUqeAi-~* zq$)Vh{C<0Tb>s6%*Gj6_X~Y6Gni+7+VXC?%vyGubDYN)G8~2s143oB9yj4^-&7#KY zL%^kdYn*!-ZZdm#P3mLrZ}=&??iP2<^b(WvDay{*7>-7sV}79XcKe+AmyCLzR>~_c z9oO12Gkxxo>`7r)VpnV4Wb(Mh#Pjj9&hoy=2SPoCt>&ceTXOmU_XCCxUYF*vJzKT* zBg4^Y#tzx1BQHF-)ZVarl3MtT)Fi{x)(<%B4iH_3FvQn=@qk8=?t;CcLyHH{aZI9^;A5c=YhfpaWlUbofJ$6ZZoal%2;tRPk#Cp^_QFl!VzIf zd+QQBE**R3rlbF7?*cwu_IX}W-ybu18mq=K#4$x{uiHN1T6TXUTe{BDcj>M!v$$=h zZIO>)o%7&*v~T3z13w>y{@6I>(si~pnQIw*3~SXdTl223lz1_Di}}(o`yOunZxFS8 z!JS_X(XR;LC@N!KuevtBDv@0y-*D~s zEmBW$#C_2o*}ao(_V>wf+L`Z7c+42&l|MVKSm(2t2r$)Lz1uYH4}blB%bv{Abus1# zrad}s^+Z<#lCDDkPrm1rkhCoFSeL%$(*BFiGiHK8ug`r(@s^L*mFBL049s8*p00i_ I>zopr09FK;LI3~& delta 667 zcmdnYewtOWGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM{Tx?{%Q;bw($R*%cGr z)a#i%JY5_^D(1YMwK3~b5}{u{6pL17MJL%HLrYoTUBK8s&yase%pBQubX#FZH?V^u}z6R3)K!^ zV!HH$0h3@U^}iBTe`{GseYV@;i>Y%zOW8B_@&{CNuL&yOQ+8JE_Lh&r512i;JsuM# zHeVE8XmzAeX4~zz(;42WO+G2UdHMds`Ke4(g6?W`<<0oX*|0owRvZso^V*}^4puhU zod11nhP2YFe>*ug&#L!Ze*JHqeNnA#^c>cX#};Qcz3DZ4W@_Bd-_L9@_iWnXxb@{v zUd_@gFq-yVx!zOzeU<2$KNdWP%QI)y>74%b`~NkSMa2yEy@vCTKmMpMzOLT#re1*Q zr`HSxN6s8xq~W)^Pu=s<#i;!Xi@q}?DOoWa=yW~0acwKtYli<)KT8=p>czT`md;w1 z_0%-Xi?>PPhl2|sGBQ5>XXLchaL-94b1Zg5q+Dm{h+cbb zZP2SDWow&x99&o)NE`^ru1(u~?jT#zj^(Z{>vO~`zA#)vL{!9m&Udfxr@p%MgEOP1 zp?BMXg?}@PWP9f~9AiH)&u;BK$=>-4@(xiBQmDkN`zuZtrTl%{;R#G{44$rjF6*2U FngCN|GLrxR 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 index eeb5a8fb91803c4ec496fd7c2f7939d38b68bc70..b81237fba3824337dadc1742d558042d55319235 100644 GIT binary patch literal 1314 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cu@pObhHwBu4M$1`kk47*5n0T@ z!2AM)8MjskWdj8zOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kpdbt-_yl0 zq+-t7yJuI2l*%0c`2FPaH_H;8CWW~13$V4$O8Byc%PT`LNv)-uL%eYpSLcFu-yK^P zv^oZ`sNGtn-rTjxL|f;Uh^xR?^(`J5Uo#8UCKT)`|8wrl%))!?pYDDBug?D2zM1!D z8mGTw^_--Fgc_DvIZV<$@KSM&>*LaGnX`7jQkc%0tU4=}ZHW+bP$%QcBMl*&Dvmt< z&-Taik!4Aubi>tH{YC3lqA%Syj$NOBP1W+=^YYK%4UUy_2SZdRIcOOwOqH16#p9uh zWC&e^^*S3S-I@QyW76tfai`bJeAO_?#Pb{Dd?xFLV9#~$D?wH>TJ-cir*NZv2uT=^jv+~8V)=YY` zaidO7o3F3KUg0OnTcWRBV*PW%=t04xs_x|e!Fa>$LBAeTocAZMNohZ{ zFCSr_l44%KwPU5hnYagMRlJ|s1~JdP(J*O^Pmzelkwe?o{CvY?=d&q^BY9=I63}TA z%TC|2d$LfT#m>9v?1bZUBZb8SCfOdie&DR~tR&+CBhOTC8IMUjRnDvLERQMfJAH&@ zN{Z_w}$cwZ-X7N_) zfy<Yih3(1isg9F$-sk%7XV^XS z|Hi$&-)eU|uFv(IqBpHYb6%t_SKE$lXc=x9NatkgYbdG2TA$LnGNZg`uaYPl8YSY&S&;r;GS7O zbMo^jZcV~xziJ*OL*J@5HldfMI18hPg{liHoATix~cm;bB& zTw%kw#(&e=%vtuwY`!=B-o?tcWoyQsb7sE5|GYQaF@v%;JXf}TjJpxP<$qc9<)`!4 ji7OzL5Gt9Q{&1&knfW@EBOni0o-ug3`njxgN@xNAIGIB? literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4PjbB0O)tu_NsW;sgUyS&APk(WG7pK&Mt69F0+4ien6^Du@_Xtkx zE6%G;O*S+7?=XQ#}E!%x*KbO|(Zw$}x7Im$7b=Ky*ePs50p6Z-g%O>CZz18OY_Rz1X z+i%~^*%}qR_)K7X6f@86r#uGBR=q#}JMv()y_nOBFI9WzD{Z>)eM;&2n>p_+p36;} zvs`E^n?&kqO(msU875)Q9P7K{p3f;hHsk%V8L5Ih>rPdw^%%-KbI1y6{ywI$^cutB zJj>@Bp6rbmp7{US_G|Y_&*iRq6)iYZ&+6bu(TzE4|328eKk)J#=GYa|mkeA|4q8q> zbMD+bHBY0wfBSCF=i7aCWtR5oO>a$n>)*b8`*&UDoz2(#_a;nrc~Uq@<$jN${jcvo z6IZ@kyLjXPzoOKlxX@~U0$=0x}YTv7FsIm9 + + + + + + + + + \ No newline at end of file diff --git a/app-android/app/src/main/res/layout/activity_no_host.xml b/app-android/app/src/main/res/layout/activity_no_host.xml deleted file mode 100644 index 88f43b7..0000000 --- a/app-android/app/src/main/res/layout/activity_no_host.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app-android/app/src/main/res/layout/activity_settings.xml b/app-android/app/src/main/res/layout/activity_settings.xml index d4023ec..05060f7 100644 --- a/app-android/app/src/main/res/layout/activity_settings.xml +++ b/app-android/app/src/main/res/layout/activity_settings.xml @@ -1,12 +1,15 @@ - + - \ No newline at end of file + android:name="at.bitfire.gfxtablet.SettingsFragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal|top" + tools:layout="@layout/activity_settings"/> + \ No newline at end of file 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 01a1e19..4fac79f 100644 --- a/app-android/app/src/main/res/menu/activity_canvas.xml +++ b/app-android/app/src/main/res/menu/activity_canvas.xml @@ -1,20 +1,20 @@ - + + app:showAsAction="ifRoom" + android:title="@string/menu_set_template_image"/> + app:showAsAction="ifRoom" + android:title="@string/fullscreen"/> + + \ No newline at end of file diff --git a/app-android/app/src/main/res/menu/set_template_image.xml b/app-android/app/src/main/res/menu/set_template_image.xml index f1f8509..8b10198 100644 --- a/app-android/app/src/main/res/menu/set_template_image.xml +++ b/app-android/app/src/main/res/menu/set_template_image.xml @@ -4,11 +4,11 @@ + android:title="@string/menu_clear_template_image"/> + android:title="@string/menu_select_another_template_image"/> \ No newline at end of file diff --git a/app-android/app/src/main/res/values/strings.xml b/app-android/app/src/main/res/values/strings.xml index 5036642..7b35d63 100644 --- a/app-android/app/src/main/res/values/strings.xml +++ b/app-android/app/src/main/res/values/strings.xml @@ -4,6 +4,12 @@ GfxTablet Settings About / Help + Donate + + Full-screen mode + Set template image + Clear template image + Select another image No valid recipient host defined. Please configure in \"Settings / Recipient host\". @@ -13,8 +19,8 @@ Only stylus input will be processed Finger and stylus input will be processed Use dark canvas - Black canvas will be used - White canvas will be used + Black canvas will be used (covers template image) + White/transparent gridded canvas will be used Keep display active Display won\'t turn off while GfxTablet is active Display will turn off according to system settings diff --git a/app-android/app/src/main/res/xml/preferences.xml b/app-android/app/src/main/res/xml/preferences.xml index 88c4254..a5b2e74 100644 --- a/app-android/app/src/main/res/xml/preferences.xml +++ b/app-android/app/src/main/res/xml/preferences.xml @@ -1,7 +1,7 @@