Skip to content

Commit

Permalink
add feedback for current option selected in rotation menu
Browse files Browse the repository at this point in the history
  • Loading branch information
pedroSG94 committed Apr 14, 2024
1 parent b845cdf commit 4da7244
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
Expand Up @@ -31,6 +31,7 @@ import com.pedro.library.util.sources.video.Camera1Source
import com.pedro.library.util.sources.video.Camera2Source
import com.pedro.streamer.R
import com.pedro.streamer.utils.FilterMenu
import com.pedro.streamer.utils.setColor
import com.pedro.streamer.utils.toast


Expand All @@ -42,6 +43,10 @@ class RotationActivity : AppCompatActivity(), OnTouchListener {

private val cameraFragment = CameraFragment.getInstance()
private val filterMenu: FilterMenu by lazy { FilterMenu(this) }
private var currentVideoSource: MenuItem? = null
private var currentAudioSource: MenuItem? = null
private var currentOrientation: MenuItem? = null
private var currentFilter: MenuItem? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -51,35 +56,54 @@ class RotationActivity : AppCompatActivity(), OnTouchListener {

override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.rotation_menu, menu)
val defaultVideoSource = menu.findItem(R.id.video_source_camera2)
val defaultAudioSource = menu.findItem(R.id.audio_source_microphone)
val defaultOrientation = menu.findItem(R.id.orientation_horizontal)
val defaultFilter = menu.findItem(R.id.no_filter)
currentVideoSource = updateMenuColor(currentVideoSource, defaultVideoSource)
currentAudioSource = updateMenuColor(currentAudioSource, defaultAudioSource)
currentOrientation = updateMenuColor(currentOrientation, defaultOrientation)
currentFilter = updateMenuColor(currentFilter, defaultFilter)
return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
try {
when (item.itemId) {
R.id.video_source_camera1 -> {
currentVideoSource = updateMenuColor(currentVideoSource, item)
cameraFragment.genericStream.changeVideoSource(Camera1Source(applicationContext))
}
R.id.video_source_camera2 -> {
currentVideoSource = updateMenuColor(currentVideoSource, item)
cameraFragment.genericStream.changeVideoSource(Camera2Source(applicationContext))
}
R.id.video_source_camerax -> {
currentVideoSource = updateMenuColor(currentVideoSource, item)
cameraFragment.genericStream.changeVideoSource(CameraXSource(applicationContext))
}
R.id.video_source_bitmap -> {
currentVideoSource = updateMenuColor(currentVideoSource, item)
val bitmap = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
cameraFragment.genericStream.changeVideoSource(BitmapSource(bitmap))
}
R.id.audio_source_microphone -> {
currentAudioSource = updateMenuColor(currentAudioSource, item)
cameraFragment.genericStream.changeAudioSource(MicrophoneSource())
}
R.id.orientation_horizontal -> {
currentOrientation = updateMenuColor(currentOrientation, item)
cameraFragment.setOrientationMode(false)
}
R.id.orientation_vertical -> {
currentOrientation = updateMenuColor(currentOrientation, item)
cameraFragment.setOrientationMode(true)
}
else -> return filterMenu.onOptionsItemSelected(item, cameraFragment.genericStream.getGlInterface())
else -> {
val result = filterMenu.onOptionsItemSelected(item, cameraFragment.genericStream.getGlInterface())
if (result) currentFilter = updateMenuColor(currentFilter, item)
return result
}
}
} catch (e: IllegalArgumentException) {
toast("Change source error: ${e.message}")
Expand All @@ -95,4 +119,10 @@ class RotationActivity : AppCompatActivity(), OnTouchListener {
}
return false
}

private fun updateMenuColor(currentItem: MenuItem?, item: MenuItem): MenuItem {
currentItem?.setColor(this, R.color.black)
item.setColor(this, R.color.appColor)
return item
}
}
12 changes: 12 additions & 0 deletions app/src/main/java/com/pedro/streamer/utils/Extensions.kt
Expand Up @@ -19,9 +19,15 @@ package com.pedro.streamer.utils
import android.app.Activity
import android.app.Service
import android.content.Context
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.view.MenuItem
import android.widget.Toast
import androidx.annotation.ColorRes
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment


/**
* Created by pedro on 1/3/24.
*/
Expand All @@ -40,4 +46,10 @@ fun Service.toast(message: String, duration: Int = Toast.LENGTH_SHORT) {

fun Context.toast(message: String, duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, message, duration).show()
}

fun MenuItem.setColor(context: Context, @ColorRes color: Int) {
val spannableString = SpannableString(title.toString())
spannableString.setSpan(ForegroundColorSpan(ContextCompat.getColor(context, color)), 0, spannableString.length, 0)
title = spannableString
}

0 comments on commit 4da7244

Please sign in to comment.