Skip to content

Commit

Permalink
- add SimpleDialog under the common dir
Browse files Browse the repository at this point in the history
- display the dialog when error happens while processing image
- change nullable signature of constructor of the adapter
- add japanese resources
  • Loading branch information
Moroi committed Dec 6, 2022
1 parent 03adf09 commit a8d49bc
Show file tree
Hide file tree
Showing 13 changed files with 124 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sangcomz.fishbun.ui.album

import android.app.Activity
import android.net.Uri
import androidx.annotation.StringRes
import com.sangcomz.fishbun.adapter.image.ImageAdapter
import com.sangcomz.fishbun.ui.album.model.Album
import com.sangcomz.fishbun.ui.album.model.AlbumMenuViewData
Expand All @@ -21,7 +21,9 @@ interface AlbumContract {
fun setToolBar(albumViewData: AlbumViewData)
fun changeToolbarTitle(selectedImageCount: Int, albumViewData: AlbumViewData)
fun finishActivityWithResult(selectedImages: List<Uri>)
fun finishActivity(code: Int = Activity.RESULT_OK)

/* show dialog and finish the Activity as dismiss performed */
fun showErrorDialogAndFinish(@StringRes resId: Int, code: Int)
fun refreshAlbumItem(position: Int, imagePath: ArrayList<Uri>)
fun scanAndRefresh()
fun showNothingSelectedMessage(nothingSelectedMessage: String)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import com.sangcomz.fishbun.util.SquareImageView
class AlbumListAdapter(
private val albumClickListener: AlbumClickListener,
private val thumbnailSize: Int,
private val imageAdapter: ImageAdapter?
private val imageAdapter: ImageAdapter
) :
RecyclerView.Adapter<AlbumListAdapter.ViewHolder>() {

Expand Down Expand Up @@ -69,7 +69,7 @@ class AlbumListAdapter(
class ViewHolder(
parent: ViewGroup,
albumSize: Int,
private val imageAdapter: ImageAdapter?
private val imageAdapter: ImageAdapter
) : RecyclerView.ViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.album_item, parent, false)
) {
Expand All @@ -83,7 +83,7 @@ class AlbumListAdapter(

fun setData(album: Album) {
val uri: Uri = Uri.parse(album.metaData.thumbnailPath)
imageAdapter?.loadImage(imgAlbumThumb, uri)
imageAdapter.loadImage(imgAlbumThumb, uri)

itemView.tag = album
txtAlbumName.text = album.displayName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.sangcomz.fishbun.ui.album.mvp

import android.app.Activity
import android.net.Uri
import com.sangcomz.fishbun.R
import com.sangcomz.fishbun.ui.album.AlbumContract
import com.sangcomz.fishbun.ui.album.model.Album
import com.sangcomz.fishbun.ui.album.model.AlbumMenuViewData
Expand Down Expand Up @@ -100,7 +101,10 @@ class AlbumPresenter(
val adapter = albumRepository.getImageAdapter()
// imageAdapter is null, so we can not proceed anymore
if (adapter == null) {
albumView.finishActivity(Activity.RESULT_CANCELED)
albumView.showErrorDialogAndFinish(
resId = R.string.msg_error,
code = Activity.RESULT_CANCELED,
)
return
}
uiHandler.run {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import android.view.MenuItem
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.appcompat.widget.Toolbar
import androidx.constraintlayout.widget.Group
import androidx.recyclerview.widget.GridLayoutManager
Expand All @@ -33,6 +34,7 @@ import com.sangcomz.fishbun.ui.album.model.Album
import com.sangcomz.fishbun.ui.album.model.AlbumViewData
import com.sangcomz.fishbun.ui.album.model.repository.AlbumRepositoryImpl
import com.sangcomz.fishbun.ui.album.mvp.AlbumPresenter
import com.sangcomz.fishbun.ui.common.SimpleDialog
import com.sangcomz.fishbun.ui.picker.PickerActivity
import com.sangcomz.fishbun.util.MainUiHandler
import com.sangcomz.fishbun.util.SingleMediaScanner
Expand Down Expand Up @@ -288,9 +290,11 @@ class AlbumActivity : BaseActivity(),
finish()
}

override fun finishActivity(code: Int) {
setResult(code, Intent())
finish()
override fun showErrorDialogAndFinish(@StringRes resId: Int, code: Int) {
SimpleDialog.show(fm = supportFragmentManager, mesId = resId) {
setResult(code, Intent())
finish()
}
}

private fun checkPermission(): Boolean {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.sangcomz.fishbun.ui.common

import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import androidx.annotation.StringRes
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import com.sangcomz.fishbun.R

internal class SimpleDialog(private val onDismiss: (DialogInterface) -> Unit) : DialogFragment() {

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val mesId = arguments?.getInt(ARG_KEY_MESSAGE)
?: throw IllegalArgumentException("can not access string resource.")
return androidx.appcompat.app.AlertDialog.Builder(requireContext())
.setMessage(mesId)
.setPositiveButton(R.string.common_positive_button_label, null)
.show()
}

override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
onDismiss.invoke(dialog)
}

internal companion object {

private const val ARG_KEY_MESSAGE = "message"

fun show(
fm: FragmentManager,
tag: String = "SimpleDialog",
@StringRes mesId: Int,
onDismiss: (DialogInterface) -> Unit,
) {
SimpleDialog(onDismiss).apply {
arguments = Bundle().apply {
putInt(ARG_KEY_MESSAGE, mesId)
}
}.show(fm, tag)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sangcomz.fishbun.ui.detail

import android.app.Activity
import android.net.Uri
import androidx.annotation.StringRes
import com.sangcomz.fishbun.adapter.image.ImageAdapter
import com.sangcomz.fishbun.ui.detail.model.DetailImageViewData

Expand All @@ -16,8 +16,11 @@ interface DetailImageContract {
fun unselectImage()
fun updateRadioButtonWithText(text: String)
fun updateRadioButtonWithDrawable()
fun finishActivity(code: Int = Activity.RESULT_OK)
fun finishActivity()
fun finishAndShowErrorToast()

/* show dialog and finish the Activity as dismiss performed */
fun showErrorDialogAndFinish(@StringRes resId: Int, code: Int)
fun initViewPagerAdapter(imageAdapter: ImageAdapter)
fun showImages(initPosition: Int, pickerImages: List<Uri>)
fun showSnackbar(message: String)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.sangcomz.fishbun.ui.detail.mvp

import android.app.Activity
import android.net.Uri
import com.sangcomz.fishbun.R
import com.sangcomz.fishbun.ui.detail.DetailImageContract
import com.sangcomz.fishbun.ui.detail.model.DetailImageRepository

Expand Down Expand Up @@ -69,7 +70,10 @@ class DetailImagePresenter(
val adapter = detailImageRepository.getImageAdapter()
// we can not proceed any more if imageAdapter is null
if (adapter == null) {
detailView.finishActivity(Activity.RESULT_CANCELED)
detailView.showErrorDialogAndFinish(
resId = R.string.msg_error,
code = Activity.RESULT_CANCELED,
)
return
}
detailView.initViewPagerAdapter(adapter)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.sangcomz.fishbun.ui.detail.ui

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Color
Expand All @@ -9,6 +10,7 @@ import android.os.Bundle
import android.view.Window
import android.widget.ImageButton
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import androidx.viewpager.widget.ViewPager
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
Expand All @@ -18,6 +20,7 @@ import com.sangcomz.fishbun.Fishton
import com.sangcomz.fishbun.R
import com.sangcomz.fishbun.adapter.image.ImageAdapter
import com.sangcomz.fishbun.datasource.FishBunDataSourceImpl
import com.sangcomz.fishbun.ui.common.SimpleDialog
import com.sangcomz.fishbun.ui.detail.DetailImageContract
import com.sangcomz.fishbun.ui.detail.adapter.DetailViewPagerAdapter
import com.sangcomz.fishbun.ui.detail.model.DetailImageRepositoryImpl
Expand Down Expand Up @@ -84,9 +87,9 @@ class DetailImageActivity : BaseActivity(), DetailImageContract.View, OnPageChan
presenter.changeButtonStatus(position)
}

override fun finishActivity(code: Int) {
override fun finishActivity() {
val i = Intent()
setResult(code, i)
setResult(Activity.RESULT_OK, i)
finish()
}

Expand Down Expand Up @@ -127,6 +130,13 @@ class DetailImageActivity : BaseActivity(), DetailImageContract.View, OnPageChan
finish()
}

override fun showErrorDialogAndFinish(@StringRes resId: Int, code: Int) {
SimpleDialog.show(fm = supportFragmentManager, mesId = resId) {
setResult(code, Intent())
finish()
}
}

override fun initViewPagerAdapter(imageAdapter: ImageAdapter) {
vpDetailPager?.run {
adapter = DetailViewPagerAdapter(imageAdapter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.view.View
import androidx.annotation.StringRes
import androidx.appcompat.widget.Toolbar
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
Expand All @@ -27,6 +28,7 @@ import com.sangcomz.fishbun.datasource.FishBunDataSourceImpl
import com.sangcomz.fishbun.datasource.ImageDataSourceImpl
import com.sangcomz.fishbun.datasource.PickerIntentDataSourceImpl
import com.sangcomz.fishbun.permission.PermissionCheck
import com.sangcomz.fishbun.ui.common.SimpleDialog
import com.sangcomz.fishbun.ui.detail.ui.DetailImageActivity.Companion.getDetailImageActivity
import com.sangcomz.fishbun.ui.picker.listener.OnPickerActionListener
import com.sangcomz.fishbun.ui.picker.model.PickerListItem
Expand Down Expand Up @@ -371,9 +373,9 @@ class PickerActivity : BaseActivity(),
return false
}

override fun finishActivity(code: Int) {
override fun finishActivity() {
val i = Intent()
setResult(code, i)
setResult(Activity.RESULT_OK, i)
finish()
}

Expand All @@ -387,6 +389,13 @@ class PickerActivity : BaseActivity(),
finish()
}

override fun showErrorDialogAndFinish(@StringRes resId: Int, code: Int) {
SimpleDialog.show(fm = supportFragmentManager, mesId = resId) {
setResult(code, Intent())
finish()
}
}

private fun setImageList(
pickerList: List<PickerListItem>,
imageAdapter: ImageAdapter,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sangcomz.fishbun.ui.picker

import android.app.Activity
import android.net.Uri
import androidx.annotation.StringRes
import com.sangcomz.fishbun.adapter.image.ImageAdapter
import com.sangcomz.fishbun.ui.picker.model.PickerListItem
import com.sangcomz.fishbun.ui.picker.model.PickerMenuViewData
Expand Down Expand Up @@ -29,7 +29,10 @@ interface PickerContract {
fun showNothingSelectedMessage(messageNotingSelected: String)
fun onCheckStateChange(position: Int, image: PickerListItem.Image)
fun showDetailView(position: Int)
fun finishActivity(code: Int = Activity.RESULT_OK)
fun finishActivity()

/* show dialog and finish the Activity as dismiss performed */
fun showErrorDialogAndFinish(@StringRes resId: Int, code: Int)
fun finishActivityWithResult(selectedImages: List<Uri>)
fun takeANewPictureWithFinish(position: Int, addedImageList: List<Uri>)
fun addImage(pickerListImage: PickerListItem.Image)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.sangcomz.fishbun.ui.picker

import android.app.Activity
import android.net.Uri
import com.sangcomz.fishbun.R
import com.sangcomz.fishbun.ui.picker.model.PickerListItem
import com.sangcomz.fishbun.ui.picker.model.PickerMenuViewData
import com.sangcomz.fishbun.ui.picker.model.PickerRepository
Expand Down Expand Up @@ -273,7 +274,10 @@ class PickerPresenter internal constructor(
onSuccessAllMediaThumbnailsPath(result)
} else {
// imageAdapter is null, so we can not proceed anymore
pickerView.finishActivity(Activity.RESULT_CANCELED)
pickerView.showErrorDialogAndFinish(
resId = R.string.msg_error,
code = Activity.RESULT_CANCELED,
)
}
}
}
16 changes: 16 additions & 0 deletions FishBun/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="album">アルバム</string>
<string name="camera">カメラ</string>
<string name="done">完了</string>
<string name="done_all">全て完了</string>
<string name="msg_no_selected">画像が選択されていません</string>
<string name="str_all_view">全て</string>
<string name="msg_permission">権限が却下されました</string>
<string name="msg_no_image">アルバムがありません</string>
<string name="msg_full_image">違う画像を選択するには選択済みの画像を外してください</string>
<string name="msg_loading_image">読み込み中…</string>
<string name="image">画像</string>
<string name="msg_error">一時的なエラーが発生しました。少し経ってから試してください</string>
<string name="msg_minimum_image">最低でも <b>%d</b> 枚選択してください</string>
</resources>
2 changes: 2 additions & 0 deletions FishBun/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@
<string name="msg_error">There was a temporary error. Please try again in a few minutes.</string>
<string name="title_toolbar" formatted="false" translatable="false">%s (%d/%d)</string>
<string name="msg_minimum_image">Please select at least <b>%d</b> images.</string>

<string name="common_positive_button_label" translatable="false">OK</string>
</resources>

0 comments on commit a8d49bc

Please sign in to comment.