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

104 lines
3.9 KiB
Kotlin

package com.adlerosn.brasilfurfest.schedule
import android.app.AlertDialog
import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v4.app.FragmentPagerAdapter
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import com.adlerosn.brasilfurfest.R
import com.adlerosn.brasilfurfest.developer.DeveloperActivity
import com.adlerosn.brasilfurfest.helper.*
import com.adlerosn.brasilfurfest.schedule.managers.ScheduleManagerGetter
import com.adlerosn.brasilfurfest.schedule.adapters.DaysPagerAdapter
import com.adlerosn.brasilfurfest.schedule.managers.ScheduleManager
import kotlinx.android.synthetic.main.activity_schedule.*
class ScheduleActivity : AppCompatActivity() {
private lateinit var scheduleManager: ScheduleManager
private lateinit var pagerAdapter: FragmentPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
ActivitiesForFragments[this.javaClass.simpleName] = this
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_schedule)
setSupportActionBar(toolbar)
resourcesAliased = this.resources
scheduleManager = ScheduleManagerGetter[this]
scheduleManager.onAttendeeIntentionsChanged()
toolbar.title = scheduleManager.convention.name
toolbar.subtitle = scheduleManager.convention.theme.solved
pagerAdapter = DaysPagerAdapter(supportFragmentManager, scheduleManager)
container.adapter = pagerAdapter
tabs.fullSetup(container)
container.offscreenPageLimit = pagerAdapter.count
fab.setOnClickListener {
Intent(this, FavoritesActivity::class.java).apply {
startActivity(this)
}
}
fab.isLongClickable = true
fab.setOnLongClickListener {
Snackbar.make(it, R.string.schedule_events_favorites, Snackbar.LENGTH_LONG).apply {
setActionTextColor(this@ScheduleActivity.getColorCompat(R.color.colorBase20))
view.setBackgroundColor(this@ScheduleActivity.getColorCompat(R.color.colorBase03))
show()
}
true
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_schedule, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_clear_planning -> {
val dialog = AlertDialog.Builder(this).create()
dialog.setTitle(R.string.schedule_clear_planning_question.getString())
dialog.setMessage(R.string.this_cannot_be_undone.getString())
dialog.setButton(AlertDialog.BUTTON_NEUTRAL, R.string.dialog_cancel.getString()) { _: DialogInterface, _: Int ->
dialog.dismiss()
}
dialog.setButton(AlertDialog.BUTTON_NEGATIVE, R.string.dialog_confirm.getString()) { _: DialogInterface, _: Int ->
dialog.dismiss()
scheduleManager.clearIntentions()
scheduleManager.onAttendeeIntentionsChanged()
}
dialog.show()
true
}
R.id.action_developer -> {
Intent(this, DeveloperActivity::class.java).apply {
startActivity(this)
}
true
}
R.id.action_search_filter -> {
Intent(this, SearchFilterActivity::class.java).apply {
startActivity(this)
}
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onBackPressed() {
if (tabs.selectedTabPosition == 0)
super.onBackPressed()
else
container.setCurrentItem(0, true)
}
}