1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package com.ted.weather.ui.activity
- import android.os.Bundle
- import android.support.v7.app.AppCompatActivity
- import android.support.v7.widget.LinearLayoutManager
- import android.support.v7.widget.Toolbar
- import com.ted.weather.R
- import com.ted.weather.domain.commands.RequestForecastCommand
- import com.ted.weather.domain.model.ForecastList
- import com.ted.weather.extensions.DelegatesExt
- import com.ted.weather.ui.adapter.ForecastListAdapter
- import kotlinx.android.synthetic.main.activity_main.*
- import kotlinx.coroutines.experimental.android.UI
- import kotlinx.coroutines.experimental.async
- import org.jetbrains.anko.coroutines.experimental.bg
- import org.jetbrains.anko.find
- import org.jetbrains.anko.startActivity
- class MainActivity : AppCompatActivity(), ToolbarManager {
- val zipCode: Long by DelegatesExt.preference(this, SettingsActivity.ZIP_CODE,
- SettingsActivity.DEFAULT_ZIP)
- override val toolbar by lazy { find<Toolbar>(R.id.toolbar) }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- initToolbar()
- forecastList.layoutManager = LinearLayoutManager(this)
- attachToScroll(forecastList)
- }
- override fun onResume() {
- super.onResume()
- loadForecast()
- }
- private fun loadForecast() = async(UI) {
- val result = bg { RequestForecastCommand(zipCode).execute() }
- updateUI(result.await())
- }
- private fun updateUI(weekForecast: ForecastList) {
- val adapter = ForecastListAdapter(weekForecast) {
- startActivity<DetailActivity>(DetailActivity.ID to it.id,
- DetailActivity.CITY_NAME to weekForecast.city)
- }
- forecastList.adapter = adapter
- toolbarTitle = "${weekForecast.city} (${weekForecast.country})"
- }
- }
|