Skip to content

Commit cbf6215

Browse files
committed
adding basic text highlighting in the editor
1 parent 5112d3a commit cbf6215

File tree

5 files changed

+65
-3
lines changed

5 files changed

+65
-3
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ ext {
4545
}
4646

4747
dependencies {
48-
implementation 'com.simplemobiletools:commons:4.6.0'
48+
implementation 'com.simplemobiletools:commons:4.6.2'
4949

5050
implementation files('../libs/RootTools.jar')
5151

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@
5252
<activity
5353
android:name=".activities.ReadTextActivity"
5454
android:label="@string/file_editor">
55+
56+
<meta-data
57+
android:name="android.app.default_searchable"
58+
android:resource="@xml/searchable"/>
59+
60+
<intent-filter>
61+
<action android:name="android.intent.action.SEARCH"/>
62+
</intent-filter>
63+
5564
<intent-filter>
5665
<action android:name="android.intent.action.VIEW"/>
5766
<category android:name="android.intent.category.DEFAULT"/>

app/src/main/kotlin/com/simplemobiletools/filemanager/activities/ReadTextActivity.kt

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package com.simplemobiletools.filemanager.activities
22

3+
import android.app.SearchManager
4+
import android.content.Context
35
import android.net.Uri
46
import android.os.Bundle
7+
import android.support.v4.view.MenuItemCompat
8+
import android.support.v7.widget.SearchView
59
import android.view.Menu
610
import android.view.MenuItem
711
import com.simplemobiletools.commons.extensions.*
@@ -17,6 +21,10 @@ import java.io.File
1721

1822
class ReadTextActivity : SimpleActivity() {
1923
private var filePath = ""
24+
private var originalText = ""
25+
private var isSearchOpen = false
26+
27+
private var searchMenuItem: MenuItem? = null
2028

2129
override fun onCreate(savedInstanceState: Bundle?) {
2230
super.onCreate(savedInstanceState)
@@ -35,6 +43,7 @@ class ReadTextActivity : SimpleActivity() {
3543

3644
override fun onCreateOptionsMenu(menu: Menu): Boolean {
3745
menuInflater.inflate(R.menu.menu_editor, menu)
46+
setupSearch(menu)
3847
return true
3948
}
4049

@@ -47,6 +56,43 @@ class ReadTextActivity : SimpleActivity() {
4756
return true
4857
}
4958

59+
private fun setupSearch(menu: Menu) {
60+
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
61+
searchMenuItem = menu.findItem(R.id.search)
62+
(searchMenuItem!!.actionView as SearchView).apply {
63+
setSearchableInfo(searchManager.getSearchableInfo(componentName))
64+
isSubmitButtonEnabled = false
65+
setOnQueryTextListener(object : android.support.v7.widget.SearchView.OnQueryTextListener {
66+
override fun onQueryTextSubmit(query: String) = false
67+
68+
override fun onQueryTextChange(newText: String): Boolean {
69+
if (isSearchOpen) {
70+
searchQueryChanged(newText)
71+
}
72+
return true
73+
}
74+
})
75+
}
76+
77+
MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
78+
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
79+
isSearchOpen = true
80+
searchQueryChanged("")
81+
return true
82+
}
83+
84+
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
85+
isSearchOpen = false
86+
return true
87+
}
88+
})
89+
}
90+
91+
private fun searchQueryChanged(text: String) {
92+
val textToHighlight = if (text.length < 2) "" else text
93+
read_text_view.setText(originalText.highlightTextPart(textToHighlight, getAdjustedPrimaryColor(), true))
94+
}
95+
5096
private fun saveText() {
5197
if (filePath.isEmpty()) {
5298
filePath = getRealPathFromURI(intent.data) ?: ""
@@ -78,7 +124,7 @@ class ReadTextActivity : SimpleActivity() {
78124
return
79125
}
80126

81-
val text = if (uri.scheme == "file") {
127+
originalText = if (uri.scheme == "file") {
82128
filePath = uri.path
83129
val file = File(filePath)
84130
if (file.exists()) {
@@ -97,6 +143,6 @@ class ReadTextActivity : SimpleActivity() {
97143
}
98144
}
99145

100-
read_text_view.setText(text)
146+
read_text_view.setText(originalText)
101147
}
102148
}

app/src/main/res/layout/activity_read_text.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
android:layout_height="wrap_content"
1212
android:background="@null"
1313
android:padding="@dimen/medium_margin"
14+
android:inputType="textMultiLine|textNoSuggestions"
1415
android:textCursorDrawable="@null"
1516
android:textSize="@dimen/smaller_text_size"/>
1617

app/src/main/res/menu/menu_editor.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/search"
6+
android:icon="@drawable/ic_search"
7+
android:title="@string/search"
8+
app:actionViewClass="android.support.v7.widget.SearchView"
9+
app:showAsAction="collapseActionView|ifRoom"/>
410
<item
511
android:id="@+id/menu_save"
612
android:icon="@drawable/ic_save"

0 commit comments

Comments
 (0)