11package com.simplemobiletools.notes.pro.activities
22
33import android.app.Activity
4+ import android.content.Context
45import android.content.Intent
56import android.net.Uri
67import android.os.Bundle
8+ import android.print.PrintAttributes
9+ import android.print.PrintManager
710import android.text.method.ArrowKeyMovementMethod
811import android.text.method.LinkMovementMethod
912import android.util.TypedValue
@@ -12,6 +15,9 @@ import android.view.Gravity
1215import android.view.Menu
1316import android.view.MenuItem
1417import android.view.inputmethod.EditorInfo
18+ import android.webkit.WebResourceRequest
19+ import android.webkit.WebView
20+ import android.webkit.WebViewClient
1521import android.widget.ImageView
1622import android.widget.TextView
1723import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
@@ -175,6 +181,7 @@ class MainActivity : SimpleActivity() {
175181 R .id.import_folder -> openFolder()
176182 R .id.export_as_file -> tryExportAsFile()
177183 R .id.export_all_notes -> tryExportAllNotes()
184+ R .id.print -> printText()
178185 R .id.delete_note -> displayDeleteNotePrompt()
179186 R .id.settings -> startActivity(Intent (applicationContext, SettingsActivity ::class .java))
180187 R .id.about -> launchAbout()
@@ -842,6 +849,32 @@ class MainActivity : SimpleActivity() {
842849 }
843850 }
844851
852+ private fun printText () {
853+ try {
854+ val webView = WebView (this )
855+ webView.webViewClient = object : WebViewClient () {
856+ override fun shouldOverrideUrlLoading (view : WebView , request : WebResourceRequest ) = false
857+
858+ override fun onPageFinished (view : WebView , url : String ) {
859+ createWebPrintJob(view)
860+ }
861+ }
862+
863+ webView.loadData(getPrintableText(), " text/plain" , " UTF-8" )
864+ } catch (e: Exception ) {
865+ showErrorToast(e)
866+ }
867+ }
868+
869+ private fun createWebPrintJob (webView : WebView ) {
870+ val jobName = mCurrentNote.title
871+ val printAdapter = webView.createPrintDocumentAdapter(jobName)
872+
873+ (getSystemService(Context .PRINT_SERVICE ) as ? PrintManager )?.apply {
874+ print (jobName, printAdapter, PrintAttributes .Builder ().build())
875+ }
876+ }
877+
845878 private fun getPagerAdapter () = view_pager.adapter as NotesPagerAdapter
846879
847880 private fun getCurrentNoteText () = getPagerAdapter().getCurrentNoteViewText(view_pager.currentItem)
@@ -854,6 +887,18 @@ class MainActivity : SimpleActivity() {
854887 }
855888 }
856889
890+ private fun getPrintableText (): String {
891+ return if (mCurrentNote.type == NoteType .TYPE_TEXT .value) {
892+ getCurrentNoteText() ? : " "
893+ } else {
894+ var printableText = " "
895+ getPagerAdapter().getNoteChecklistRawItems(view_pager.currentItem)?.forEach {
896+ printableText + = " ${it.title} \n\n "
897+ }
898+ printableText
899+ }
900+ }
901+
857902 private fun addTextToCurrentNote (text : String ) = getPagerAdapter().appendText(view_pager.currentItem, text)
858903
859904 private fun saveCurrentNote (force : Boolean ) {
0 commit comments