@@ -36,8 +36,7 @@ import me.rosuh.easywatermark.ui.dialog.SaveImageBSDialogFragment
3636import me.rosuh.easywatermark.ui.panel.ContentFragment
3737import me.rosuh.easywatermark.ui.panel.LayoutFragment
3838import me.rosuh.easywatermark.ui.panel.StyleFragment
39- import pl.droidsonroids.gif.GifDrawable
40- import pl.droidsonroids.gif.GifImageView
39+ import me.rosuh.easywatermark.utils.FileUtils
4140import kotlin.math.abs
4241
4342
@@ -55,7 +54,6 @@ class MainActivity : AppCompatActivity() {
5554 scope.launch {
5655 initView()
5756 initObserver()
58- (iv_logo.drawable as ? GifDrawable )?.start()
5957 cl_root.setTransition(R .id.transition_launch)
6058 cl_root.transitionToEnd()
6159 checkHadCrash()
@@ -65,6 +63,16 @@ class MainActivity : AppCompatActivity() {
6563 }
6664 }
6765
66+ override fun onStart () {
67+ super .onStart()
68+ iv_logo.start()
69+ }
70+
71+ override fun onPause () {
72+ super .onPause()
73+ iv_logo.stop()
74+ }
75+
6876 private fun checkHadCrash () {
6977 with (getSharedPreferences(MyApp .SP_NAME , MODE_PRIVATE )) {
7078 val isCrash = getBoolean(MyApp .KEY_IS_CRASH , false )
@@ -106,16 +114,16 @@ class MainActivity : AppCompatActivity() {
106114 try {
107115 cl_root.setTransition(R .id.transition_open_image)
108116 cl_root.transitionToEnd()
109- (iv_logo.drawable as ? GifDrawable )?.stop()
110117 iv_photo?.config = it
118+ iv_logo.stop()
111119 } catch (se: SecurityException ) {
112120 se.printStackTrace()
113121 // reset the uri because we don't have permission -_-
114122 viewModel.updateUri(Uri .parse(" " ))
115123 }
116124 })
117125
118- viewModel.tipsStatus.observe(this , Observer { tips ->
126+ viewModel.tipsStatus.observe(this , { tips ->
119127 when (tips) {
120128 is MainViewModel .TipsStatus .None -> {
121129 tv_data_tips.apply {
@@ -137,7 +145,7 @@ class MainActivity : AppCompatActivity() {
137145 }
138146 })
139147
140- viewModel.saveState.observe(this , Observer { state ->
148+ viewModel.saveState.observe(this , { state ->
141149 when (state) {
142150 MainViewModel .State .SaveOk -> {
143151 Toast .makeText(this , getString(R .string.tips_save_ok), Toast .LENGTH_SHORT )
@@ -215,7 +223,9 @@ class MainActivity : AppCompatActivity() {
215223 performClick()
216224 scope.launch {
217225 delay(300 )
218- viewModel.updateTips(MainViewModel .TipsStatus .None )
226+ val isAlphaZero = (config?.alpha ? : 0 ) == 0
227+ val isTextSize = (config?.textSize ? : 0 ) == 0
228+ viewModel.updateTips(MainViewModel .TipsStatus .None (isAlphaZero || isTextSize))
219229 }
220230 }
221231 }
@@ -271,11 +281,7 @@ class MainActivity : AppCompatActivity() {
271281 }
272282
273283 R .id.action_pick -> {
274- if (viewModel.isPermissionGrated(this )) {
275- performFileSearch(READ_REQUEST_CODE )
276- } else {
277- viewModel.requestPermission(this )
278- }
284+ performFileSearch(READ_REQUEST_CODE )
279285 true
280286 }
281287
@@ -292,17 +298,30 @@ class MainActivity : AppCompatActivity() {
292298 * Fires an intent to spin up the "file chooser" UI and select an image.
293299 */
294300 fun performFileSearch (requestCode : Int ) {
301+ if (! viewModel.isPermissionGrated(this )) {
302+ viewModel.requestPermission(this )
303+ return
304+ }
295305 val intent = Intent (Intent .ACTION_OPEN_DOCUMENT ).apply {
296306 flags = (Intent .FLAG_GRANT_READ_URI_PERMISSION
297307 or Intent .FLAG_GRANT_WRITE_URI_PERMISSION
298308 or Intent .FLAG_GRANT_PERSISTABLE_URI_PERMISSION )
299309 addCategory(Intent .CATEGORY_OPENABLE )
300- type = " image/*"
310+ type = " */*"
311+ }
312+ val result = kotlin.runCatching {
313+ startActivityForResult(
314+ intent,
315+ requestCode
316+ )
317+ }
318+ if (result.isFailure) {
319+ Toast .makeText(
320+ this ,
321+ getString(R .string.tips_not_app_can_open_imaegs),
322+ Toast .LENGTH_LONG
323+ ).show()
301324 }
302- startActivityForResult(
303- intent,
304- requestCode
305- )
306325 }
307326
308327 override fun onRequestPermissionsResult (
@@ -325,35 +344,39 @@ class MainActivity : AppCompatActivity() {
325344
326345 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
327346 super .onActivityResult(requestCode, resultCode, data)
347+ if (resultCode != Activity .RESULT_OK ) {
348+ Toast .makeText(
349+ this ,
350+ getString(R .string.tips_do_not_choose_image),
351+ Toast .LENGTH_SHORT
352+ ).show()
353+ return
354+ }
328355 when (requestCode) {
329356 READ_REQUEST_CODE -> {
330- if (resultCode == Activity .RESULT_OK ) {
331- data?.data?.also { uri ->
332- viewModel.updateUri(uri)
333- takePersistableUriPermission(uri)
334- }
357+ val uri = data?.data
358+ if (FileUtils .isImage(this .contentResolver, uri)) {
359+ viewModel.updateUri(uri!! )
360+ takePersistableUriPermission(uri)
335361 } else {
336362 Toast .makeText(
337363 this ,
338- getString(R .string.tips_do_not_choose_image ),
364+ getString(R .string.tips_choose_other_file_type ),
339365 Toast .LENGTH_SHORT
340- )
341- .show()
366+ ).show()
342367 }
343368 }
344369 ICON_REQUEST_CODE -> {
345- if (resultCode == Activity .RESULT_OK ) {
346- data?.data?.also { uri ->
347- viewModel.updateIcon(uri)
348- takePersistableUriPermission(uri)
349- }
370+ val uri = data?.data
371+ if (FileUtils .isImage(this .contentResolver, uri)) {
372+ viewModel.updateIcon(uri!! )
373+ takePersistableUriPermission(uri)
350374 } else {
351375 Toast .makeText(
352376 this ,
353- getString(R .string.tips_do_not_choose_image ),
377+ getString(R .string.tips_choose_other_file_type ),
354378 Toast .LENGTH_SHORT
355- )
356- .show()
379+ ).show()
357380 }
358381 }
359382 }
0 commit comments