ref: dd2ee96d47a98c46ac7ca5a5631e01b8b40a4bea
app/src/main/java/ml/adamsprogs/bimba/NoDbActivity.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
package ml.adamsprogs.bimba import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.content.IntentFilter import android.widget.TextView class NoDbActivity : AppCompatActivity(), NetworkStateReceiver.OnConnectivityChangeListener, MessageReceiver.OnTimetableDownloadListener { val networkStateReceiver = NetworkStateReceiver() val timetableDownloadReceiver = MessageReceiver() var serviceRunning = false var askedForNetwork = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_nodb) var filter: IntentFilter filter = IntentFilter("ml.adamsprogs.bimba.timetableDownloaded") filter.addCategory(Intent.CATEGORY_DEFAULT) registerReceiver(timetableDownloadReceiver, filter) timetableDownloadReceiver.addOnTimetableDownloadListener(this) if (!isNetworkAvailable(this)) { askedForNetwork = true (findViewById(R.id.noDbCaption) as TextView).text = getString(R.string.no_db_connect) filter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE") registerReceiver(networkStateReceiver, filter) networkStateReceiver.addOnConnectivityChangeListener(this) } else downloadTimetable() } fun downloadTimetable() { (findViewById(R.id.noDbCaption) as TextView).text = getString(R.string.no_db_downloading) serviceRunning = true intent = Intent(this, TimetableDownloader::class.java) intent.putExtra("force", true) startService(intent) } override fun onConnectivityChange(connected: Boolean) { if (connected && !serviceRunning) downloadTimetable() /*if (!connected) serviceRunning = false*/ } override fun onTimetableDownload(result: String?) { when (result) { "downloaded" -> { timetableDownloadReceiver.removeOnTimetableDownloadListener(this) networkStateReceiver.removeOnConnectivityChangeListener(this) startActivity(Intent(this, MainActivity::class.java)) finish() } else -> (findViewById(R.id.noDbCaption) as TextView).text = getString(R.string.error_try_later) } } override fun onPause() { super.onPause() unregisterReceiver(timetableDownloadReceiver) if (askedForNetwork) unregisterReceiver(networkStateReceiver) } } |