From 743225ab6a38687d07d172bdd460b624ec24dd43 Mon Sep 17 00:00:00 2001 From: Leonid Plyushch Date: Tue, 15 Jan 2019 15:51:41 +0200 Subject: [PATCH] feature: allow to keep screen on --- .../main/java/com/termux/app/TermuxActivity.java | 13 +++++++++++++ .../main/java/com/termux/app/TermuxPreferences.java | 12 ++++++++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 26 insertions(+) diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index 7dc51a3a..18dbcb8d 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -90,6 +90,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection private static final int CONTEXTMENU_RESET_TERMINAL_ID = 5; private static final int CONTEXTMENU_STYLING_ID = 6; private static final int CONTEXTMENU_HELP_ID = 8; + private static final int CONTEXTMENU_TOGGLE_KEEP_SCREEN_ON = 9; private static final int MAX_SESSIONS = 8; @@ -210,6 +211,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection mTerminalView.setOnKeyListener(new TermuxViewClient(this)); mTerminalView.setTextSize(mSettings.getFontSize()); + mTerminalView.setKeepScreenOn(mSettings.isScreenAlwaysOn()); mTerminalView.requestFocus(); final ViewPager viewPager = findViewById(R.id.viewpager); @@ -637,6 +639,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection menu.add(Menu.NONE, CONTEXTMENU_KILL_PROCESS_ID, Menu.NONE, getResources().getString(R.string.kill_process, getCurrentTermSession().getPid())).setEnabled(currentSession.isRunning()); menu.add(Menu.NONE, CONTEXTMENU_STYLING_ID, Menu.NONE, R.string.style_terminal); menu.add(Menu.NONE, CONTEXTMENU_HELP_ID, Menu.NONE, R.string.help); + menu.add(Menu.NONE, CONTEXTMENU_TOGGLE_KEEP_SCREEN_ON, Menu.NONE, R.string.toggle_keep_screen_on).setCheckable(true).setChecked(mSettings.isScreenAlwaysOn()); } /** Hook system menu to show context menu instead. */ @@ -756,6 +759,16 @@ public final class TermuxActivity extends Activity implements ServiceConnection case CONTEXTMENU_HELP_ID: startActivity(new Intent(this, TermuxHelpActivity.class)); return true; + case CONTEXTMENU_TOGGLE_KEEP_SCREEN_ON: { + if(mTerminalView.getKeepScreenOn()) { + mTerminalView.setKeepScreenOn(false); + mSettings.setScreenAlwaysOn(this, false); + } else { + mTerminalView.setKeepScreenOn(true); + mSettings.setScreenAlwaysOn(this, true); + } + return true; + } default: return super.onContextItemSelected(item); } diff --git a/app/src/main/java/com/termux/app/TermuxPreferences.java b/app/src/main/java/com/termux/app/TermuxPreferences.java index 9fd048bc..b98d9741 100644 --- a/app/src/main/java/com/termux/app/TermuxPreferences.java +++ b/app/src/main/java/com/termux/app/TermuxPreferences.java @@ -40,7 +40,9 @@ final class TermuxPreferences { private static final String SHOW_EXTRA_KEYS_KEY = "show_extra_keys"; private static final String FONTSIZE_KEY = "fontsize"; private static final String CURRENT_SESSION_KEY = "current_session"; + private static final String SCREEN_ALWAYS_ON_KEY = "screen_always_on"; + private boolean mScreenAlwaysOn; private int mFontSize; @AsciiBellBehaviour @@ -67,6 +69,7 @@ final class TermuxPreferences { MIN_FONTSIZE = (int) (4f * dipInPixels); mShowExtraKeys = prefs.getBoolean(SHOW_EXTRA_KEYS_KEY, true); + mScreenAlwaysOn = prefs.getBoolean(SCREEN_ALWAYS_ON_KEY, false); // http://www.google.com/design/spec/style/typography.html#typography-line-height int defaultFontSize = Math.round(12 * dipInPixels); @@ -103,6 +106,15 @@ final class TermuxPreferences { prefs.edit().putString(FONTSIZE_KEY, Integer.toString(mFontSize)).apply(); } + boolean isScreenAlwaysOn() { + return mScreenAlwaysOn; + } + + void setScreenAlwaysOn(Context context, boolean newValue) { + mScreenAlwaysOn = newValue; + PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(SCREEN_ALWAYS_ON_KEY, newValue).apply(); + } + static void storeCurrentSession(Context context, TerminalSession session) { PreferenceManager.getDefaultSharedPreferences(context).edit().putString(TermuxPreferences.CURRENT_SESSION_KEY, session.mHandle).apply(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4686e518..1e634468 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -9,6 +9,7 @@ Style Terminal transcript Help + Keep screen on Installing… Unable to install