/* * MainActivity.kt * Implements the MainActivity class * MainActivity is the default activity that can host the player fragment and the settings fragment * * This file is part of * TRANSISTOR - Radio App for Android * * Copyright (c) 2015-22 - Y20K.org * Licensed under the MIT-License * http://opensource.org/licenses/MIT */ package com.michatec.radio import android.content.SharedPreferences import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.navigateUp import com.michatec.radio.helpers.AppThemeHelper import com.michatec.radio.helpers.FileHelper import com.michatec.radio.helpers.ImportHelper import com.michatec.radio.helpers.PreferencesHelper /* * MainActivity class */ class MainActivity : AppCompatActivity() { /* Main class variables */ private lateinit var appBarConfiguration: AppBarConfiguration /* Overrides onCreate from AppCompatActivity */ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // house-keeping: determine if edit stations is enabled by default todo: remove in 2023 if (PreferencesHelper.isHouseKeepingNecessary()) { // house-keeping 1: remove hard coded default image ImportHelper.removeDefaultStationImageUris(this) // house-keeping 2: if existing user detected, enable Edit Stations by default if (PreferencesHelper.loadCollectionSize() != -1) { // existing user detected - enable Edit Stations by default PreferencesHelper.saveEditStationsEnabled(true) } PreferencesHelper.saveHouseKeepingNecessaryState() } // set up views setContentView(R.layout.activity_main) // create .nomedia file - if not yet existing FileHelper.createNomediaFile(getExternalFilesDir(null)) // set up action bar setSupportActionBar(findViewById(R.id.main_toolbar)) val toolbar: Toolbar = findViewById(R.id.main_toolbar) val navHostFragment = supportFragmentManager.findFragmentById(R.id.main_host_container) as NavHostFragment val navController = navHostFragment.navController appBarConfiguration = AppBarConfiguration(navController.graph) NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration) supportActionBar?.hide() // register listener for changes in shared preferences PreferencesHelper.registerPreferenceChangeListener(sharedPreferenceChangeListener) } /* Overrides onSupportNavigateUp from AppCompatActivity */ override fun onSupportNavigateUp(): Boolean { // Taken from: https://developer.android.com/guide/navigation/navigation-ui#action_bar val navHostFragment = supportFragmentManager.findFragmentById(R.id.main_host_container) as NavHostFragment val navController = navHostFragment.navController return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp() } /* Overrides onDestroy from AppCompatActivity */ override fun onDestroy() { super.onDestroy() // unregister listener for changes in shared preferences PreferencesHelper.unregisterPreferenceChangeListener(sharedPreferenceChangeListener) } /* * Defines the listener for changes in shared preferences */ private val sharedPreferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { _, key -> when (key) { Keys.PREF_THEME_SELECTION -> { AppThemeHelper.setTheme(PreferencesHelper.loadThemeSelection()) } } } /* * End of declaration */ }