diff --git a/app/build.gradle b/app/build.gradle index 2034a5b..9576352 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "com.github.drunlin.webappbox" minSdkVersion 16 targetSdkVersion 28 - versionCode 3 - versionName "1.2" + versionCode 4 + versionName "1.3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/github/drunlin/webappbox/common/Constants.kt b/app/src/main/java/com/github/drunlin/webappbox/common/Constants.kt index 3a20d12..d2c686a 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/common/Constants.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/common/Constants.kt @@ -37,3 +37,4 @@ val PREF_FULL_SCREEN = "full_screen" val PREF_CLEAR_DATA = "clear_data" val PREF_CLEAR_CACHE = "clear_cache" val PREF_LAUNCH_MODE = "launch_mode" +val PREF_TEXT_ZOOM = "text_zoom" diff --git a/app/src/main/java/com/github/drunlin/webappbox/data/Rule.kt b/app/src/main/java/com/github/drunlin/webappbox/data/Rule.kt index bb0ff22..ac3fe22 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/data/Rule.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/data/Rule.kt @@ -3,6 +3,7 @@ package com.github.drunlin.webappbox.data data class Rule(override var id: Long, var pattern: URLPattern, var color: Int, + var textZoom: Int, var launchMode: LaunchMode, var orientation: Orientation, var fullScreen: Boolean, diff --git a/app/src/main/java/com/github/drunlin/webappbox/fragment/PreferencesFragment.kt b/app/src/main/java/com/github/drunlin/webappbox/fragment/PreferencesFragment.kt index d9ff826..3cb5e0e 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/fragment/PreferencesFragment.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/fragment/PreferencesFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.support.design.widget.Snackbar import android.support.v7.preference.Preference import android.support.v7.preference.PreferenceFragmentCompat +import android.support.v7.preference.SeekBarPreference import android.view.View import com.github.drunlin.webappbox.R import com.github.drunlin.webappbox.activity.FragmentActivity @@ -35,12 +36,23 @@ class PreferencesFragment : PreferenceFragmentCompat(), UserAgentsFragment.OnCha override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setupTextZoomPreference() + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) findPreference(PREF_COLOR).isVisible = false updateUserAgentSummary() } + private fun setupTextZoomPreference() { + val preference = findPreference(PREF_TEXT_ZOOM) as SeekBarPreference + preference.summary = getString(R.string.text_zoom_summary, preference.value) + preference.setOnPreferenceChangeListener { _, value -> + preference.summary = getString(R.string.text_zoom_summary, value as Int) + true + } + } + private fun updateUserAgentSummary() { findPreference(PREF_USER_AGENT).summary = userAgent.name } diff --git a/app/src/main/java/com/github/drunlin/webappbox/fragment/RuleEditorFragment.kt b/app/src/main/java/com/github/drunlin/webappbox/fragment/RuleEditorFragment.kt index b2a8260..db4b469 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/fragment/RuleEditorFragment.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/fragment/RuleEditorFragment.kt @@ -4,6 +4,7 @@ import android.databinding.ViewDataBinding import android.os.Build import android.os.Bundle import android.view.View +import android.widget.SeekBar import com.github.drunlin.webappbox.BR import com.github.drunlin.webappbox.R import com.github.drunlin.webappbox.common.BUNDLE_UA @@ -62,6 +63,16 @@ class RuleEditorFragment(id: Long?) : EditorFragment(id), editor.onStateChange = { confirmMenu?.isEnabled = it } editor.isExisted = { v, b -> ruleManager.isExited(v, b) } + textZoomSeekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) = Unit + + override fun onStartTrackingTouch(seekBar: SeekBar?) = Unit + + override fun onStopTrackingTouch(seekBar: SeekBar) { + textZoomText.text = getString(R.string.text_zoom_summary, seekBar.progress) + } + }) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) colorItem.setOnClickListener { showDialog(ColorPickerFragment(colorView.color)) } else @@ -74,7 +85,7 @@ class RuleEditorFragment(id: Long?) : EditorFragment(id), } private fun updateUserAgentSummary() { - (binding as FragmentRuleEditorBinding).userAgentItem!!.summary = userAgent?.name + (binding as FragmentRuleEditorBinding).userAgentItem.summary = userAgent?.name } override fun onConfigureView(data: Rule) { @@ -97,13 +108,14 @@ class RuleEditorFragment(id: Long?) : EditorFragment(id), val pattern = editor.value val regex = editor.regex val color = colorView.color + val tz = textZoomSeekBar.progress val lm = LaunchMode.valueOf(launchModeSpinner.value) val so = Orientation.valueOf(orientationSpinner.value) val ua = userAgent ?: data?.userAgent ?: userAgents.getOrNull(0) val fs = fullScreenItem.switcher.isChecked val js = enableJavascriptItem.switcher.isChecked - id?.run { ruleManager.update(this, pattern, regex, color, lm, so, fs, ua, js) } - ?: ruleManager.insert(pattern, regex, color, lm, so, fs, ua, js) + id?.run { ruleManager.update(this, pattern, regex, color, tz, lm, so, fs, ua, js) } + ?: ruleManager.insert(pattern, regex, color, tz, lm, so, fs, ua, js) } } diff --git a/app/src/main/java/com/github/drunlin/webappbox/fragment/WebappWindowFragment.kt b/app/src/main/java/com/github/drunlin/webappbox/fragment/WebappWindowFragment.kt index 4f2a5d8..e5e4769 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/fragment/WebappWindowFragment.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/fragment/WebappWindowFragment.kt @@ -395,6 +395,7 @@ class WebappWindowFragment() : Fragment(), DownloadListener, OnKeyListener, OnGl updateSystemUi(url) + view.settings.textZoom = rule!!.textZoom view.settings.userAgentString = rule!!.userAgent.value view.settings.javaScriptEnabled = rule!!.jsEnabled diff --git a/app/src/main/java/com/github/drunlin/webappbox/model/DatabaseManager.kt b/app/src/main/java/com/github/drunlin/webappbox/model/DatabaseManager.kt index e840949..eb26631 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/model/DatabaseManager.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/model/DatabaseManager.kt @@ -20,7 +20,7 @@ class DatabaseManager(private val context: Context) : companion object { val DB_NAME = "app.db" - val DB_VERSION = 1 + val DB_VERSION = 2 val TABLE_APP = "app" val TABLE_RULE = "rule" @@ -44,6 +44,7 @@ class DatabaseManager(private val context: Context) : val FULL_SCREEN = "full_screen" val LAUNCH_MODE = "launch_mode" val LOCATION = "location" + val TEXT_ZOOM = "text_zoom" } @Inject lateinit var userAgentManager: Lazy @@ -76,6 +77,7 @@ class DatabaseManager(private val context: Context) : $PATTERN text not null, $REGEX integer not null, $COLOR integer not null, + $TEXT_ZOOM integer not null, $LAUNCH_MODE text not null, $ORIENTATION text not null, $FULL_SCREEN integer not null, @@ -89,7 +91,9 @@ class DatabaseManager(private val context: Context) : sql.split(";\n").filter(String::isNotBlank).map { "$it;" }.forEach { db.execSQL(it) } } - override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) = Unit + override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { + db.execSQL("ALTER TABLE $TABLE_RULE ADD COLUMN $TEXT_ZOOM integer default 100;") + } private fun query(table: String, columns: Array, selection: String?, selectionArgs: Array?): Cursor { @@ -204,6 +208,7 @@ class DatabaseManager(private val context: Context) : values.put(PATTERN, pattern.pattern) values.put(REGEX, pattern.regex) values.put(COLOR, color) + values.put(TEXT_ZOOM, textZoom) values.put(LAUNCH_MODE, launchMode.name) values.put(ORIENTATION, orientation.name) values.put(FULL_SCREEN, fullScreen) @@ -228,15 +233,15 @@ class DatabaseManager(private val context: Context) : fun getRules(id: Long): MutableList { val list = LinkedList() - val columns = arrayOf(ID, PATTERN, REGEX, COLOR, LAUNCH_MODE, ORIENTATION, FULL_SCREEN, + val columns = arrayOf(ID, PATTERN, REGEX, COLOR, TEXT_ZOOM, LAUNCH_MODE, ORIENTATION, FULL_SCREEN, USER_AGENT, JS_ENABLE) val cursor = query(TABLE_RULE, columns, "$APP_ID=$id", ORDER) if (cursor.moveToFirst()) do list.add(Rule(cursor.getLong(0), URLPattern(cursor.getString(1), cursor.getBoolean(2)), - cursor.getInt(3), LaunchMode.valueOf(cursor.getString(4)), - Orientation.valueOf(cursor.getString(5)), cursor.getBoolean(6), - userAgentManager.get().getUserAgent(cursor.getLong(7)), cursor.getBoolean(8))) + cursor.getInt(3), cursor.getInt(4), LaunchMode.valueOf(cursor.getString(5)), + Orientation.valueOf(cursor.getString(6)), cursor.getBoolean(7), + userAgentManager.get().getUserAgent(cursor.getLong(8)), cursor.getBoolean(9))) while (cursor.moveToNext()) cursor.close() return list diff --git a/app/src/main/java/com/github/drunlin/webappbox/model/PreferenceModel.kt b/app/src/main/java/com/github/drunlin/webappbox/model/PreferenceModel.kt index 32bfcea..8faf190 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/model/PreferenceModel.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/model/PreferenceModel.kt @@ -33,6 +33,7 @@ class PreferenceModel : Injectable, SharedPreferences.OnSharedPreferenceChangeLi val orientation = Orientation.valueOf( preferences.getString(PREF_ORIENTATION, Orientation.NORMAL.name)) _defaultRule = Rule(-1, URLPattern(), preferences.getInt(PREF_COLOR, Color.BLACK), + preferences.getInt(PREF_TEXT_ZOOM, 100), launchMode, orientation, preferences.getBoolean(PREF_FULL_SCREEN, false), userAgent, preferences.getBoolean(PREF_ENABLE_JS, true)) } diff --git a/app/src/main/java/com/github/drunlin/webappbox/model/RuleManager.kt b/app/src/main/java/com/github/drunlin/webappbox/model/RuleManager.kt index 142b11b..79a4315 100644 --- a/app/src/main/java/com/github/drunlin/webappbox/model/RuleManager.kt +++ b/app/src/main/java/com/github/drunlin/webappbox/model/RuleManager.kt @@ -27,12 +27,13 @@ open class RuleManager : DataManager() { onMove.invoke { it(from, to) } } - fun update(id: Long, pattern: String, regex: Boolean, color: Int, launchMode: LaunchMode, + fun update(id: Long, pattern: String, regex: Boolean, color: Int, textZoom: Int, launchMode: LaunchMode, orientation: Orientation, fullScreen: Boolean, userAgent: UserAgent?, enableJS: Boolean) { val (index, rule) = rules.findIndexedValue { it.id == id } rule.pattern.pattern = pattern rule.pattern.regex = regex rule.color = color + rule.textZoom = textZoom rule.launchMode = launchMode rule.orientation = orientation rule.fullScreen = fullScreen @@ -41,10 +42,10 @@ open class RuleManager : DataManager() { update(index, rule) } - fun insert(pattern: String, regex: Boolean, color: Int, launchMode: LaunchMode, + fun insert(pattern: String, regex: Boolean, color: Int, textZoom: Int, launchMode: LaunchMode, orientation: Orientation, fullScreen: Boolean, userAgent: UserAgent?, enableJS: Boolean) { - val rule = Rule(generateId(), URLPattern(pattern, regex), color, launchMode, orientation, + val rule = Rule(generateId(), URLPattern(pattern, regex), color, textZoom, launchMode, orientation, fullScreen, userAgent ?: userAgentManager.defaultUserAgent, enableJS) insert(rule) } diff --git a/app/src/main/res/layout/fragment_rule_editor.xml b/app/src/main/res/layout/fragment_rule_editor.xml index dfc4b2b..2dae2cf 100644 --- a/app/src/main/res/layout/fragment_rule_editor.xml +++ b/app/src/main/res/layout/fragment_rule_editor.xml @@ -36,6 +36,35 @@ android:layout_gravity="right|center_vertical" app:color="@{rule != null ? rule.color : @android:color/black}"/> + + + + + + + 全局唯一 网络应用盒子 + 文字大小 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 971a172..f0cf247 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -78,7 +78,7 @@ OK Add Version - 1.2 + 1.3 Github https://github.com/drunlin/webappbox Developer @@ -106,4 +106,6 @@ Links that are not matched are opened in other apps Set special rules for pages Preview + Text zoom + %d%% diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index b5361f5..9a65ecf 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -1,14 +1,21 @@ - + +