Skip to content

Commit 3a520b4

Browse files
committed
adding a Print function at the editor
1 parent e6b4b47 commit 3a520b4

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

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

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@ import android.app.SearchManager
44
import android.content.Context
55
import android.net.Uri
66
import android.os.Bundle
7+
import android.print.PrintAttributes
8+
import android.print.PrintManager
79
import android.view.Menu
810
import android.view.MenuItem
11+
import android.webkit.WebResourceRequest
12+
import android.webkit.WebView
13+
import android.webkit.WebViewClient
914
import androidx.appcompat.widget.SearchView
1015
import androidx.core.view.MenuItemCompat
1116
import com.simplemobiletools.commons.extensions.*
@@ -50,14 +55,15 @@ class ReadTextActivity : SimpleActivity() {
5055
when (item.itemId) {
5156
R.id.menu_save -> saveText()
5257
R.id.menu_open_with -> openPath(intent.dataString, true)
58+
R.id.menu_print -> printText()
5359
else -> return super.onOptionsItemSelected(item)
5460
}
5561
return true
5662
}
5763

5864
private fun setupSearch(menu: Menu) {
5965
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
60-
searchMenuItem = menu.findItem(R.id.search)
66+
searchMenuItem = menu.findItem(R.id.menu_search)
6167
(searchMenuItem!!.actionView as SearchView).apply {
6268
setSearchableInfo(searchManager.getSearchableInfo(componentName))
6369
isSubmitButtonEnabled = false
@@ -110,6 +116,32 @@ class ReadTextActivity : SimpleActivity() {
110116
}
111117
}
112118

119+
private fun printText() {
120+
try {
121+
val webView = WebView(this)
122+
webView.webViewClient = object : WebViewClient() {
123+
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest) = false
124+
125+
override fun onPageFinished(view: WebView, url: String) {
126+
createWebPrintJob(view)
127+
}
128+
}
129+
130+
webView.loadData(read_text_view.text.toString(), "text/plain", "UTF-8")
131+
} catch (e: Exception) {
132+
showErrorToast(e)
133+
}
134+
}
135+
136+
private fun createWebPrintJob(webView: WebView) {
137+
val jobName = if (filePath.isNotEmpty()) filePath.getFilenameFromPath() else getString(R.string.app_name)
138+
val printAdapter = webView.createPrintDocumentAdapter(jobName)
139+
140+
(getSystemService(Context.PRINT_SERVICE) as? PrintManager)?.apply {
141+
print(jobName, printAdapter, PrintAttributes.Builder().build())
142+
}
143+
}
144+
113145
private fun checkIntent() {
114146
read_text_view.setTextColor(config.textColor)
115147
val uri = if (intent.extras?.containsKey(REAL_FILE_PATH) == true) {

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<menu xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto">
44
<item
5-
android:id="@+id/search"
5+
android:id="@+id/menu_search"
66
android:icon="@drawable/ic_search"
77
android:title="@string/search"
88
app:actionViewClass="androidx.appcompat.widget.SearchView"
@@ -16,4 +16,8 @@
1616
android:id="@+id/menu_open_with"
1717
android:title="@string/open_with"
1818
app:showAsAction="never"/>
19+
<item
20+
android:id="@+id/menu_print"
21+
android:title="@string/print"
22+
app:showAsAction="never"/>
1923
</menu>

0 commit comments

Comments
 (0)