11package com.simplemobiletools.draw.activities
22
3+ import android.app.Activity
34import android.content.Intent
45import android.graphics.Bitmap
56import android.graphics.PorterDuff
67import android.graphics.drawable.ColorDrawable
78import android.net.Uri
89import android.os.Bundle
10+ import android.provider.MediaStore
911import android.support.v4.content.FileProvider
12+ import android.util.Log
1013import android.view.Menu
1114import android.view.MenuItem
1215import android.webkit.MimeTypeMap
@@ -40,6 +43,7 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
4043 private var strokeWidth = 0f
4144 private var suggestedFileExtension = PNG
4245 private var isEraserOn = false
46+ private var isImageCaptureIntent = false
4347
4448 override fun onCreate (savedInstanceState : Bundle ? ) {
4549 super .onCreate(savedInstanceState)
@@ -79,11 +83,18 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
7983
8084 override fun onCreateOptionsMenu (menu : Menu ): Boolean {
8185 menuInflater.inflate(R .menu.menu, menu)
86+ menu.apply {
87+ findItem(R .id.menu_confirm).isVisible = isImageCaptureIntent
88+ findItem(R .id.menu_save).isVisible = ! isImageCaptureIntent
89+ findItem(R .id.menu_share).isVisible = ! isImageCaptureIntent
90+ }
91+
8292 return true
8393 }
8494
8595 override fun onOptionsItemSelected (item : MenuItem ): Boolean {
8696 when (item.itemId) {
97+ R .id.menu_confirm -> confirmImage()
8798 R .id.menu_save -> trySaveImage()
8899 R .id.menu_share -> shareImage()
89100 R .id.clear -> clearCanvas()
@@ -105,17 +116,14 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
105116 }
106117
107118 private fun tryOpenFile () {
108- handlePermission(PERMISSION_WRITE_STORAGE ) {
109- if (it) {
110- openFile()
111- } else {
112- toast(R .string.no_storage_permissions)
113- }
119+ getStoragePermission {
120+ openFile()
114121 }
115122 }
116123
117124 private fun openFile () {
118- FilePickerDialog (this , curPath) {
125+ val path = if (isImageCaptureIntent) " " else curPath
126+ FilePickerDialog (this , path) {
119127 openPath(it)
120128 }
121129 }
@@ -141,6 +149,16 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
141149 openPath(path)
142150 }
143151 }
152+
153+ if (intent?.action == MediaStore .ACTION_IMAGE_CAPTURE ) {
154+ val output = intent.extras?.get(MediaStore .EXTRA_OUTPUT )
155+ if (output != null && output is Uri ) {
156+ isImageCaptureIntent = true
157+ Log .e(" DEBUG" , " output $output , path ${output.path} " )
158+ curPath = output.path
159+ invalidateOptionsMenu()
160+ }
161+ }
144162 }
145163
146164 private fun getStoragePermission (callback : () -> Unit ) {
@@ -217,13 +235,20 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
217235 }
218236 }
219237
220- private fun trySaveImage () {
221- handlePermission(PERMISSION_WRITE_STORAGE ) {
222- if (it) {
223- saveImage()
224- } else {
225- toast(R .string.no_storage_permissions)
238+ private fun confirmImage () {
239+ val file = File (curPath)
240+ getFileOutputStream(file) {
241+ it.use {
242+ my_canvas.getBitmap().compress(file.getCompressionFormat(), 70 , it)
226243 }
244+ setResult(Activity .RESULT_OK )
245+ finish()
246+ }
247+ }
248+
249+ private fun trySaveImage () {
250+ getStoragePermission {
251+ saveImage()
227252 }
228253 }
229254
0 commit comments