conventionschedule-android/app/src/main/java/com/adlerosn/brasilfurfest/schedule/EventActivity.kt

148 lines
6.4 KiB
Kotlin
Raw Normal View History

package com.adlerosn.brasilfurfest.schedule
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.view.ViewGroup
import com.adlerosn.brasilfurfest.R
2018-07-17 19:38:11 +00:00
import com.adlerosn.brasilfurfest.helper.KnownAssets
import com.adlerosn.brasilfurfest.helper.TextualJoiner
import com.adlerosn.brasilfurfest.helper.inflate
import com.adlerosn.brasilfurfest.helper.runtimeLanguage
import com.adlerosn.brasilfurfest.schedule.abstractDataTypes.managed.AttendeeConFavorite
import kotlinx.android.synthetic.main.activity_event.*
import kotlinx.android.synthetic.main.activity_event_content.*
import kotlinx.android.synthetic.main.activity_event_content_keypair.view.*
import java.text.SimpleDateFormat
import java.util.Observer
class EventActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_event)
setSupportActionBar(toolbar)
toolbar_layout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar)
toolbar_layout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar)
val scheduleManager = ScheduleManager(this)
val favorite = intent.getSerializableExtra("favorite") as AttendeeConFavorite
val offerStar = intent.getBooleanExtra("offerStar", false)
val event = favorite.findInConvention(scheduleManager.convention)
toolbar_layout.title = favorite.getString(this)
app_bar_image.setImageDrawable(
Drawable.createFromStream(
2018-07-17 19:38:11 +00:00
assets.open( event?.assetImage ?: KnownAssets.background),
null
)
)
val language = runtimeLanguage
val hourFormatter = SimpleDateFormat("HH:mm", language.locale)
val dowFormatter = SimpleDateFormat("EEEE (d)", language.locale)
keypairs.removeAllViews()
inflateKeyPair(
getString(R.string.schedule_event_key_activity),
favorite.getString(this),
keypairs
)
if(event?.subtitles?.get(language)?.isNotEmpty() == true)
inflateKeyPair(
getString(R.string.schedule_event_key_detail),
event.subtitles[language]!!,
keypairs
)
inflateKeyPair(
getString(R.string.schedule_event_key_when),
getString(R.string.schedule_event_key_when_formatted).format(
dowFormatter.format(favorite.timeRange.start.timeInMillis),
hourFormatter.format(favorite.timeRange.start.timeInMillis),
hourFormatter.format(favorite.timeRange.finish.timeInMillis)
).capitalize(),
keypairs
)
if(event!=null) {
if(event.places.isNotEmpty())
inflateKeyPair(
if(event.places.size==1)
getString(R.string.schedule_event_key_place)
else
getString(R.string.schedule_event_key_places),
TextualJoiner(language)[event.places.map { it.names[language]!! }],
keypairs
)
if(event.language!=null)
inflateKeyPair(
getString(R.string.schedule_event_key_language),
getString(event.language.language),
keypairs
)
event.descriptions[language]?.let {
if(it.isNotEmpty())
inflateKeyPair(
getString(R.string.schedule_event_key_description),
it,
keypairs
)
if(event.tags.isNotEmpty())
inflateKeyPair(
getString(R.string.schedule_event_key_category),
TextualJoiner(language)[event.tags.map { it.names[language]!! }],
keypairs
)
if(event.conbookPages.isNotEmpty())
inflateKeyPair(
if(event.conbookPages.size==1)
getString(R.string.schedule_event_key_on_conbooks_page)
else
getString(R.string.schedule_event_key_on_conbooks_pages),
TextualJoiner(language)[event.conbookPages.map { it.toString() }],
keypairs
)
if(event.conbookId.isNotEmpty())
inflateKeyPair(
getString(R.string.schedule_event_key_identified_on_conbook_as),
event.conbookId,
keypairs
)
if(event.attendableBy.isNotEmpty())
inflateKeyPair(
if(event.attendableBy.size==1)
getString(R.string.schedule_event_key_elegible_registration)
else
getString(R.string.schedule_event_key_elegible_registrations),
TextualJoiner(language)[event.attendableBy.map { it.names[language]!! }],
keypairs
)
}
2018-07-16 23:15:20 +00:00
if(event.hiddenFromTimeTable or (scheduleManager.attendeeFavorites.registrationTier.level !in event.attendableBy.map { it.level }))
fab.visibility = View.GONE
}
if(!offerStar) fab.visibility = View.GONE
fab.setOnClickListener { _ ->
fab.setImageResource(R.drawable.ic_star_half_white_24dp)
if (favorite in scheduleManager.attendeeFavorites)
scheduleManager.attendeeFavorites.remove(favorite)
else
scheduleManager.attendeeFavorites.add(favorite)
}
scheduleManager.addObserver (Observer { _, _ ->
if (favorite in scheduleManager.attendeeFavorites)
fab.setImageResource(R.drawable.ic_star_white_24dp)
else
fab.setImageResource(R.drawable.ic_star_border_white_24dp)
}.apply { this.update(null, null) })
}
private fun inflateKeyPair(key: String, value: String, into: ViewGroup? = null) =
layoutInflater.inflate(R.layout.activity_event_content_keypair).apply {
textKey.text = key
textValue.text = value
into?.addView(this)
}
}