package com.ted.weather.ui.activity import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.widget.TextView import com.squareup.picasso.Picasso import com.ted.weather.R import com.ted.weather.domain.commands.RequestDayForecastCommand import com.ted.weather.domain.model.Forecast import com.ted.weather.extensions.color import com.ted.weather.extensions.textColor import com.ted.weather.extensions.toDateString import kotlinx.android.synthetic.main.activity_detail.* import kotlinx.coroutines.experimental.android.UI import kotlinx.coroutines.experimental.async import org.jetbrains.anko.coroutines.experimental.bg import org.jetbrains.anko.ctx import org.jetbrains.anko.find import java.text.DateFormat class DetailActivity : AppCompatActivity(), ToolbarManager { override val toolbar by lazy { find(R.id.toolbar) } companion object { val ID = "DetailActivity:id" val CITY_NAME = "DetailActivity:cityName" } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_detail) initToolbar() toolbarTitle = intent.getStringExtra(CITY_NAME) enableHomeAsUp { onBackPressed() } async(UI) { val result = bg { RequestDayForecastCommand(intent.getLongExtra(ID, -1)).execute() } bindForecast(result.await()) } } private fun bindForecast(forecast: Forecast) = with(forecast) { Picasso.with(ctx).load(iconUrl).into(icon) toolbar.subtitle = date.toDateString(DateFormat.FULL) weatherDescription.text = description bindWeather(high to maxTemperature, low to minTemperature) } private fun bindWeather(vararg views: Pair) = views.forEach { it.second.text = "${it.first}ยบ" it.second.textColor = color(when (it.first) { in -50..0 -> android.R.color.holo_red_dark in 0..15 -> android.R.color.holo_orange_dark else -> android.R.color.holo_green_dark }) } }