diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6edfa7d8..b5a4d680 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,8 +22,8 @@ @@ -36,8 +36,8 @@ + android:launchMode="singleTop" + android:screenOrientation="portrait"> @@ -79,6 +79,12 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + - - - + getColor(R.color.player_color_1) + color2 -> getColor(R.color.player_color_2) + color3 -> getColor(R.color.player_color_3) + color4 -> getColor(R.color.player_color_4) + color5 -> getColor(R.color.player_color_5) + color6 -> getColor(R.color.player_color_6) + color7 -> getColor(R.color.player_color_7) + color8 -> getColor(R.color.player_color_8) + color9 -> getColor(R.color.player_color_9) + else -> getColor(R.color.player_color_1) + } + + val intent = Intent() + intent.putExtra(INTENT_COLOR, color) + setResult(Activity.RESULT_OK, intent) + finish() + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt index 8f9dc49c..58101f39 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt @@ -1,12 +1,16 @@ package net.pokeranalytics.android.ui.fragment.data +import android.app.Activity.RESULT_OK import android.app.AlertDialog +import android.content.Intent +import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Player +import net.pokeranalytics.android.ui.activity.ColorPickerActivity import net.pokeranalytics.android.ui.activity.components.MediaActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -22,6 +26,10 @@ import java.io.File */ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSource { + companion object { + const val REQUEST_CODE_PICK_COLOR = 1000 + } + private val player: Player get() { return this.item as Player @@ -36,6 +44,16 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou return inflater.inflate(R.layout.fragment_player, container, false) } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + + if (requestCode == REQUEST_CODE_PICK_COLOR && resultCode == RESULT_OK && data?.hasExtra(ColorPickerActivity.INTENT_COLOR) == true) { + val color = data.getIntExtra(ColorPickerActivity.INTENT_COLOR, Color.TRANSPARENT) + player.color = if (color != Color.TRANSPARENT) color else null + rowRepresentableAdapter.refreshRow(PlayerRow.IMAGE) + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initUI() @@ -113,19 +131,20 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou val placesArray = ArrayList() placesArray.add(getString(R.string.take_a_picture)) placesArray.add(getString(R.string.library)) - - // TODO - //placesArray.add(getString(R.string.select_a_color)) + placesArray.add(getString(R.string.select_a_color)) if (player.hasPicture()) { placesArray.add(getString(R.string.remove_picture)) } builder.setItems(placesArray.toTypedArray()) { _, which -> - when (which) { - 0 -> mediaActivity?.openImageCaptureIntent(false) - 1 -> mediaActivity?.openImageGalleryIntent(false) - 2 -> { + when (placesArray[which]) { + getString(R.string.take_a_picture) -> mediaActivity?.openImageCaptureIntent(false) + getString(R.string.library) -> mediaActivity?.openImageGalleryIntent(false) + getString(R.string.select_a_color) -> { + ColorPickerActivity.newInstanceForResult(this, REQUEST_CODE_PICK_COLOR) + } + getString(R.string.remove_picture) -> { player.updateValue(null, PlayerRow.IMAGE) rowRepresentableAdapter.refreshRow(PlayerRow.IMAGE) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt index 6aedd289..d85e316e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt @@ -1,12 +1,14 @@ package net.pokeranalytics.android.ui.view import android.content.Context +import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.util.AttributeSet import android.util.TypedValue import android.view.LayoutInflater import android.widget.FrameLayout import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat.getColor import androidx.core.content.res.ResourcesCompat import com.bumptech.glide.Glide import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade @@ -33,6 +35,13 @@ class PlayerImageView : FrameLayout { SMALL -> 16f } } + + fun getStrokeSize() : Int { + return when (this) { + NORMAL -> 4.px + SMALL -> 2.px + } + } } private lateinit var playerImageView: ConstraintLayout @@ -67,7 +76,7 @@ class PlayerImageView : FrameLayout { /** * Set the session data to the view */ - fun setPlayer(player: Player, size: Size = Size.NORMAL) { + fun setPlayer(player: Player, size: Size = Size.NORMAL, isClickable: Boolean = true) { // Initial val playerInitial = if (player.name.isNotEmpty()) { @@ -87,7 +96,6 @@ class PlayerImageView : FrameLayout { // Picture if (player.hasPicture()) { - playerImageView.playerStroke.background = null Glide.with(this) .load(player.picture) @@ -100,15 +108,26 @@ class PlayerImageView : FrameLayout { playerImageView.playerImage.setImageDrawable(null) } - // Stroke - player.color?.let { - val drawable = playerImageView.playerStroke.background as GradientDrawable? - drawable?.setStroke(4.px, it) + // Player color + val color = if (player.color != null) { + player.color as Int + } else if (player.hasPicture()) { + Color.TRANSPARENT + } else { + getColor(context, R.color.kaki) } + // Stroke & initial + val drawable = playerImageView.playerStroke.background as GradientDrawable? + drawable?.setStroke(size.getStrokeSize(), color) + playerImageView.playerInitial.setTextColor(color) + + // Click listener - playerImageView.playerImageSelection.setOnClickListener { - onImageClickListener?.onClick(it) + if (isClickable) { + playerImageView.playerImageSelection.setOnClickListener { + onImageClickListener?.onClick(it) + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index ddb44101..8cf37099 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -638,7 +638,7 @@ enum class RowViewType(private var layoutRes: Int) { if (row is Player) { itemView.findViewById(R.id.playerImage)?.let { playerImageView -> - playerImageView.setPlayer(row, PlayerImageView.Size.SMALL) + playerImageView.setPlayer(row, PlayerImageView.Size.SMALL, false) } itemView.findViewById(R.id.playerName)?.let { textView -> textView.text = row.name diff --git a/app/src/main/res/drawable/circle_player_color_1.xml b/app/src/main/res/drawable/circle_player_color_1.xml new file mode 100644 index 00000000..8cf572ee --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_1.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_2.xml b/app/src/main/res/drawable/circle_player_color_2.xml new file mode 100644 index 00000000..c803cf76 --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_2.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_3.xml b/app/src/main/res/drawable/circle_player_color_3.xml new file mode 100644 index 00000000..5b5ab8e3 --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_3.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_4.xml b/app/src/main/res/drawable/circle_player_color_4.xml new file mode 100644 index 00000000..39f8c91b --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_4.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_5.xml b/app/src/main/res/drawable/circle_player_color_5.xml new file mode 100644 index 00000000..bd3aa3ec --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_5.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_6.xml b/app/src/main/res/drawable/circle_player_color_6.xml new file mode 100644 index 00000000..9f41cab8 --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_6.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_7.xml b/app/src/main/res/drawable/circle_player_color_7.xml new file mode 100644 index 00000000..68ebe9e7 --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_7.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_8.xml b/app/src/main/res/drawable/circle_player_color_8.xml new file mode 100644 index 00000000..5d725ca5 --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_8.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_player_color_9.xml b/app/src/main/res/drawable/circle_player_color_9.xml new file mode 100644 index 00000000..053ad739 --- /dev/null +++ b/app/src/main/res/drawable/circle_player_color_9.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_color_picker.xml b/app/src/main/res/layout/activity_color_picker.xml new file mode 100644 index 00000000..e2942fff --- /dev/null +++ b/app/src/main/res/layout/activity_color_picker.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ec3eb74a..27382ae6 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,6 +11,7 @@ #8AFFFFFF #141414 #1B1F1B + #808080 #e0e0e0 #40000000 @@ -43,4 +44,15 @@ #3c8c50 #71fb94 + + #00000000 + #ffdf3e + #65FF82 + #8efde7 + #3aaeff + #6150ff + #ff56ff + #ff573d + #ff971e + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 802da918..2fc85f30 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -5,4 +5,8 @@ 12sp 11sp + + 48dp + 8dp + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 67893092..5b48f8f1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -290,6 +290,8 @@ @color/green @color/white @color/gray_dark + @null + true