From 085c0b95f14a7ab1bc902a0b7c1e62b2269b4f94 Mon Sep 17 00:00:00 2001 From: zt515 Date: Mon, 12 Jun 2017 20:57:53 +0800 Subject: [PATCH] Feature: Preference --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 11 ++-- .../neoterm/preference/NeoTermPreference.kt | 62 ++++++++++++++++-- .../main/java/io/neoterm/ui/AboutActivity.kt | 25 +++++++ .../java/io/neoterm/ui/NeoTermActivity.kt | 19 ++++-- .../view/tab/TermSessionChangedCallback.kt | 23 +++++++ .../io/neoterm/view/tab/TermTabDecorator.kt | 6 +- .../io/neoterm/view/tab/TermViewClient.kt | 8 ++- .../res/drawable-hdpi/ic_apps_white_36dp.png | Bin 0 -> 92 bytes .../drawable-hdpi/ic_general_white_36dp.png | Bin 0 -> 500 bytes .../res/drawable-hdpi/ic_info_white_36dp.png | Bin 0 -> 340 bytes .../res/drawable-hdpi/ic_ui_white_36dp.png | Bin 0 -> 166 bytes .../drawable/ic_terminal_running_white.xml | 33 ++++++++++ app/src/main/res/layout/activity_about.xml | 47 +++++++++++++ app/src/main/res/layout/content_about.xml | 17 +++++ app/src/main/res/layout/tab_main.xml | 2 +- app/src/main/res/raw/bell.ogg | Bin 0 -> 5090 bytes app/src/main/res/values/colors.xml | 4 +- app/src/main/res/values/dimens.xml | 5 ++ app/src/main/res/values/preference_keys.xml | 12 ++++ app/src/main/res/values/strings.xml | 13 ++++ app/src/main/res/values/styles.xml | 6 +- app/src/main/res/xml/setting_general.xml | 17 +++++ app/src/main/res/xml/settings_main.xml | 16 +++-- app/src/main/res/xml/settings_package.xml | 3 + app/src/main/res/xml/settings_ui.xml | 14 ++++ .../android/tabswitcher/TabSwitcher.java | 8 ++- 27 files changed, 322 insertions(+), 30 deletions(-) create mode 100644 app/src/main/java/io/neoterm/ui/AboutActivity.kt create mode 100644 app/src/main/res/drawable-hdpi/ic_apps_white_36dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_general_white_36dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_info_white_36dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_ui_white_36dp.png create mode 100755 app/src/main/res/drawable/ic_terminal_running_white.xml create mode 100644 app/src/main/res/layout/activity_about.xml create mode 100644 app/src/main/res/layout/content_about.xml create mode 100755 app/src/main/res/raw/bell.ogg create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/preference_keys.xml diff --git a/app/build.gradle b/app/build.gradle index dacfdc7..6aefc8c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,4 +41,5 @@ dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile project(':chrome-tabs') + implementation 'com.android.support:design:25.3.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 069dc6e..848c04b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + - - - - @@ -42,6 +40,11 @@ + + \ No newline at end of file diff --git a/app/src/main/java/io/neoterm/preference/NeoTermPreference.kt b/app/src/main/java/io/neoterm/preference/NeoTermPreference.kt index 3508e60..9d2ea10 100644 --- a/app/src/main/java/io/neoterm/preference/NeoTermPreference.kt +++ b/app/src/main/java/io/neoterm/preference/NeoTermPreference.kt @@ -1,6 +1,7 @@ package io.neoterm.preference import android.content.Context +import android.content.SharedPreferences import android.preference.PreferenceManager import io.neoterm.backend.TerminalSession import io.neoterm.services.NeoTermService @@ -10,17 +11,66 @@ import io.neoterm.services.NeoTermService */ object NeoTermPreference { - var CURRENT_SESSION_KEY = "neoterm_current_session" + const val KEY_FONT_SIZE = "neoterm_general_font_size" + const val KEY_CURRENT_SESSION = "neoterm_service_current_session" - fun storeCurrentSession(context: Context, session: TerminalSession) { - PreferenceManager.getDefaultSharedPreferences(context) - .edit() - .putString(NeoTermPreference.CURRENT_SESSION_KEY, session.mHandle) + var preference: SharedPreferences? = null + var context: Context? = null + + fun init(context: Context) { + this.context = context + preference = PreferenceManager.getDefaultSharedPreferences(context) + } + + fun cleanup() { + preference = null + context = null + } + + fun store(key: Int, value: Any) { + store(context!!.getString(key), value) + } + + fun store(key: String, value: Any) { + when (value) { + is Int -> preference!!.edit().putInt(key, value).apply() + is String -> preference!!.edit().putString(key, value).apply() + is Boolean -> preference!!.edit().putBoolean(key, value).apply() + } + } + + fun loadInt(key: Int, defaultValue: Int): Int { + return loadInt(context!!.getString(key), defaultValue) + } + + fun loadString(key: Int, defaultValue: String?): String { + return loadString(context!!.getString(key), defaultValue) + } + + fun loadBoolean(key: Int, defaultValue: Boolean): Boolean { + return loadBoolean(context!!.getString(key), defaultValue) + } + + fun loadInt(key: String, defaultValue: Int): Int { + return preference!!.getInt(key, defaultValue) + } + + fun loadString(key: String, defaultValue: String?): String { + return preference!!.getString(key, defaultValue) + } + + fun loadBoolean(key: String, defaultValue: Boolean): Boolean { + return preference!!.getBoolean(key, defaultValue) + } + + fun storeCurrentSession(session: TerminalSession) { + preference!!.edit() + .putString(NeoTermPreference.KEY_CURRENT_SESSION, session.mHandle) .apply() } fun getCurrentSession(termService: NeoTermService?): TerminalSession? { - val sessionHandle = PreferenceManager.getDefaultSharedPreferences(termService!!).getString(CURRENT_SESSION_KEY, "") + val sessionHandle = PreferenceManager.getDefaultSharedPreferences(termService!!).getString(KEY_CURRENT_SESSION, "") var i = 0 val len = termService.sessions.size while (i < len) { diff --git a/app/src/main/java/io/neoterm/ui/AboutActivity.kt b/app/src/main/java/io/neoterm/ui/AboutActivity.kt new file mode 100644 index 0000000..727dd0d --- /dev/null +++ b/app/src/main/java/io/neoterm/ui/AboutActivity.kt @@ -0,0 +1,25 @@ +package io.neoterm.ui + +import android.os.Bundle +import android.support.design.widget.FloatingActionButton +import android.support.design.widget.Snackbar +import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.Toolbar + +import io.neoterm.R + +class AboutActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_about) + val toolbar = findViewById(R.id.about_toolbar) as Toolbar + setSupportActionBar(toolbar) + + val fab = findViewById(R.id.about_fab) as FloatingActionButton + fab.setOnClickListener({ view -> + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show() + }) + } +} diff --git a/app/src/main/java/io/neoterm/ui/NeoTermActivity.kt b/app/src/main/java/io/neoterm/ui/NeoTermActivity.kt index caafbfc..c4635af 100644 --- a/app/src/main/java/io/neoterm/ui/NeoTermActivity.kt +++ b/app/src/main/java/io/neoterm/ui/NeoTermActivity.kt @@ -12,6 +12,7 @@ import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.KeyEvent import android.view.View +import android.view.WindowManager import android.widget.ImageButton import de.mrapp.android.tabswitcher.* import de.mrapp.android.tabswitcher.view.TabSwitcherButton @@ -45,11 +46,20 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection { addNewSession(session) } switchToSession(getStoredCurrentSessionOrLast()) + } else { + tabSwitcher.showSwitcher() + addNewSession("NeoTerm #0", createRevealAnimation()) } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + NeoTermPreference.init(this) + if (NeoTermPreference.loadBoolean(R.string.key_ui_fullscreen, false)) { + window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN) + } + setContentView(R.layout.tab_main) tabSwitcher = findViewById(R.id.tab_switcher) as TabSwitcher @@ -68,16 +78,16 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection { override fun onResume() { super.onResume() tabSwitcher.addListener(object : TabSwitcherListener { - private var tabSwitcherButtonInited = false + private var tabSwitcherButtonInit = false override fun onSwitcherShown(tabSwitcher: TabSwitcher) { - if (tabSwitcherButtonInited) { + if (tabSwitcherButtonInit) { return } val menu = tabSwitcher.toolbarMenu if (menu != null) { - tabSwitcherButtonInited = true + tabSwitcherButtonInit = true val tabSwitcherButton = menu.findItem(R.id.toggle_tab_switcher_menu_item).actionView as TabSwitcherButton tabSwitcherButton.setOnClickListener { if (tabSwitcher.isSwitcherShown) { @@ -94,7 +104,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection { override fun onSelectionChanged(tabSwitcher: TabSwitcher, selectedTabIndex: Int, selectedTab: Tab?) { if (selectedTab is TermTab && selectedTab.termSession != null) { - NeoTermPreference.storeCurrentSession(this@NeoTermActivity, selectedTab.termSession!!) + NeoTermPreference.storeCurrentSession(selectedTab.termSession!!) } } @@ -125,6 +135,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection { termService = null } unbindService(this) + NeoTermPreference.cleanup() } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { diff --git a/app/src/main/java/io/neoterm/view/tab/TermSessionChangedCallback.kt b/app/src/main/java/io/neoterm/view/tab/TermSessionChangedCallback.kt index d813c57..47ce936 100644 --- a/app/src/main/java/io/neoterm/view/tab/TermSessionChangedCallback.kt +++ b/app/src/main/java/io/neoterm/view/tab/TermSessionChangedCallback.kt @@ -3,7 +3,11 @@ package io.neoterm.view.tab import android.content.ClipData import android.content.ClipboardManager import android.content.Context +import android.media.SoundPool +import android.os.Vibrator +import io.neoterm.R import io.neoterm.backend.TerminalSession +import io.neoterm.preference.NeoTermPreference import io.neoterm.view.TerminalView /** @@ -13,6 +17,9 @@ class TermSessionChangedCallback : TerminalSession.SessionChangedCallback { var termView: TerminalView? = null var termTab: TermTab? = null + var bellId: Int = 0 + var soundPool: SoundPool? = null + override fun onTextChanged(changedSession: TerminalSession?) { termView?.onScreenUpdated() } @@ -35,6 +42,22 @@ class TermSessionChangedCallback : TerminalSession.SessionChangedCallback { } override fun onBell(session: TerminalSession?) { + if (termView == null) { + return + } + + if (NeoTermPreference.loadBoolean(R.string.key_general_bell, false)) { + if (soundPool == null) { + soundPool = SoundPool.Builder().setMaxStreams(1).build() + bellId = soundPool!!.load(termView!!.context, R.raw.bell, 1) + } + soundPool?.play(bellId, 1f, 1f, 0, 0, 1f) + } + + if (NeoTermPreference.loadBoolean(R.string.key_general_vibrate, false)) { + val vibrator = termView!!.context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator + vibrator.vibrate(100) + } } override fun onColorsChanged(session: TerminalSession?) { diff --git a/app/src/main/java/io/neoterm/view/tab/TermTabDecorator.kt b/app/src/main/java/io/neoterm/view/tab/TermTabDecorator.kt index edf0253..4d1494b 100644 --- a/app/src/main/java/io/neoterm/view/tab/TermTabDecorator.kt +++ b/app/src/main/java/io/neoterm/view/tab/TermTabDecorator.kt @@ -10,9 +10,9 @@ import android.view.ViewGroup import de.mrapp.android.tabswitcher.Tab import de.mrapp.android.tabswitcher.TabSwitcher import de.mrapp.android.tabswitcher.TabSwitcherDecorator -import io.neoterm.ui.NeoTermActivity import io.neoterm.R -import io.neoterm.customize.color.builtin.MaterialColorScheme +import io.neoterm.preference.NeoTermPreference +import io.neoterm.ui.NeoTermActivity import io.neoterm.view.ExtraKeysView import io.neoterm.view.TerminalView @@ -59,7 +59,7 @@ class TermTabDecorator(val context: NeoTermActivity) : TabSwitcherDecorator() { if (view == null) { return } - view.textSize = 30 + view.textSize = NeoTermPreference.loadInt(NeoTermPreference.KEY_FONT_SIZE, 30) view.setTypeface(Typeface.MONOSPACE) if (tab is TermTab) { diff --git a/app/src/main/java/io/neoterm/view/tab/TermViewClient.kt b/app/src/main/java/io/neoterm/view/tab/TermViewClient.kt index 6d749f9..2fddcde 100644 --- a/app/src/main/java/io/neoterm/view/tab/TermViewClient.kt +++ b/app/src/main/java/io/neoterm/view/tab/TermViewClient.kt @@ -5,7 +5,9 @@ import android.view.InputDevice import android.view.KeyEvent import android.view.MotionEvent import android.view.inputmethod.InputMethodManager +import io.neoterm.R import io.neoterm.backend.TerminalSession +import io.neoterm.preference.NeoTermPreference import io.neoterm.view.ExtraKeysView import io.neoterm.view.TerminalView import io.neoterm.view.TerminalViewClient @@ -27,7 +29,9 @@ class TermViewClient(val context: Context) : TerminalViewClient { if (scale < 0.9f || scale > 1.1f) { val increase = scale > 1f val changedSize = (if (increase) 1 else -1) * 2 - termView!!.textSize = termView!!.textSize + changedSize + val fontSize = termView!!.textSize + changedSize + termView!!.textSize = fontSize + NeoTermPreference.store(NeoTermPreference.KEY_FONT_SIZE, fontSize) return 1.0f } return scale @@ -39,7 +43,7 @@ class TermViewClient(val context: Context) : TerminalViewClient { } override fun shouldBackButtonBeMappedToEscape(): Boolean { - return false + return NeoTermPreference.loadBoolean(R.string.key_generaL_backspace_map_to_esc, false) } override fun copyModeChanged(copyMode: Boolean) { diff --git a/app/src/main/res/drawable-hdpi/ic_apps_white_36dp.png b/app/src/main/res/drawable-hdpi/ic_apps_white_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..5098d29fce4c51d0274eaa8e69ca7b5a9d84056c GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>`VBp6OsFEs^HOeH~n!3+##lh0ZJd7_>!jv*C{ m$qH-+^?yFH+k2+RwlFdXcbEjO>-^IL(&p*v=d#Wzp$Py{>J~Zx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_general_white_36dp.png b/app/src/main/res/drawable-hdpi/ic_general_white_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3a617247dd8fa32e699be72e0d46740e89df6e4d GIT binary patch literal 500 zcmV0LSqk>0RogRwu#ad=0?|5K+;hSQlM=fKD!QL+`Q((n_1fSeH_SEPa9ygop|; z>O*J}T8G@yD)%+=_qcy*F8O!v=OdjyoMD+dpIFrxt9)dOyDaJ?xJZqk7@@`pF%DQ` zNp5(|0l83Pgye=i)I9h!m=tP^kV$ns6~ku_TgqqdX^i{yNU=5XRD@ULMnqI)A)rP= zZcEegh+K<`rXZkAZbkp&0{dik@KgYww`2yK({V&(T6mfPk2aZ5lUQUQV?;%B5RhOD zDa*zkGHY@`jm%Bi*u+Sw$N>Q<#=2~L!05^mUobkdF~n%d5!)Dj**L<8bQ78N%OEmpIN@MEH^9>GGv+`JmaiR q0-sxK(4o&Ezv$CpgB$odef|I#@$;4zVspm;0000 z{qOx%>h;7s8wx56Jw1ks6KiI1kPi+#aH&PJ2*rG2kW`aBhfKK;qJpW6`6g6X0Tp+Kkgf)>vOxu@%56}U z3@UAqNxoWRgL?0avf0r66UZcknozT!fd*!ul0iosv`z*shZSj)K!&$r+jJ6WH*Wue zIy#Vd=B|yDMb~5N+mUhA&86jk4aR&ik^dv-u+xZ`Kd)*La`$@UnBd-%E5pt?DFHTP mMNUaWM@K`+k>x0Uub?07ICz#IlqDzt0000|k0wldT1B8K8uBVG*h{y5d1c`eO_P_mK{Qv(y zb@o5ZueLNwD*yg}y58%+^#4Wz&7b}UbA3`|Gi|WsO=0EQbT6>kjaSMvdvc zyP~|f|NH-6n#i~1XZ^G@uU@?WZ~T942Pd + + + + + + + + + diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml new file mode 100644 index 0000000..a0b3a33 --- /dev/null +++ b/app/src/main/res/layout/activity_about.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/content_about.xml b/app/src/main/res/layout/content_about.xml new file mode 100644 index 0000000..30375df --- /dev/null +++ b/app/src/main/res/layout/content_about.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/layout/tab_main.xml b/app/src/main/res/layout/tab_main.xml index 97e5ac7..a0ed0c9 100644 --- a/app/src/main/res/layout/tab_main.xml +++ b/app/src/main/res/layout/tab_main.xml @@ -5,7 +5,7 @@ xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="#ff14181c" + android:background="@color/terminal_background" custom:layoutPolicy="auto" custom:tabBackgroundColor="@color/tab_background_color" custom:tabIcon="@drawable/ic_tab_icon" diff --git a/app/src/main/res/raw/bell.ogg b/app/src/main/res/raw/bell.ogg new file mode 100755 index 0000000000000000000000000000000000000000..674f25d02621bf91e077455a824a8d723b0c1ddf GIT binary patch literal 5090 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 #607D8B #455A64 - #03A9F4 - #13181a + #FF5252 + #ff14181c diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..da62b5f --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + 180dp + 16dp + 16dp + diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml new file mode 100644 index 0000000..4d93391 --- /dev/null +++ b/app/src/main/res/values/preference_keys.xml @@ -0,0 +1,12 @@ + + + neoterm_general_bell + neoterm_general_vibrate + neoterm_general_backspace_map_to_esc + + neoterm_ui_fullscreen + neoterm_ui_font + neoterm_ui_color_scheme + + neoterm_package_source + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b77efaf..20a435a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,4 +12,17 @@ General Settings UI Settings Package Settings + + Hello NeoTerm. + + Bell + Bell when receiving \'\\a\' + Vibrate + Vibrate when receiving \'\\a\' + BackSpace Mapped to Esc + Send esc when backspace is pressed + Full Screen + Font + Color Scheme + Source diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 030c370..8870a63 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - +