Create the UIObject interface

It is implemented by every visible object and serves as an abstraction, 
simplification.

Also: there only is one central sharedPreferences object (in 
`Functions.kt`). That makes the code way more readable.
This commit is contained in:
Finn M Glas 2020-06-18 09:25:38 +02:00
parent fc754b8c9a
commit 0c3a267d62
No known key found for this signature in database
GPG key ID: 902A30146014DFBF
16 changed files with 327 additions and 333 deletions

View file

@ -21,9 +21,8 @@ import kotlin.math.abs
// used for the apps drawer / menu (ChooseActivity)
lateinit var viewAdapter: RecyclerView.Adapter<*>
lateinit var viewManager: RecyclerView.LayoutManager
class HomeActivity : AppCompatActivity(),
class HomeActivity: UIObject, AppCompatActivity(),
GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
private var currentTheme = "" // keep track of theme changes
@ -44,45 +43,23 @@ class HomeActivity : AppCompatActivity(),
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Preferences
val sharedPref = this.getSharedPreferences(
launcherPreferences = this.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE)
// Flags
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
loadSettings(launcherPreferences)
currentTheme = getSavedTheme(this)
if (currentTheme == "custom") {
try {
background = MediaStore.Images.Media.getBitmap(this.contentResolver, Uri.parse(sharedPref.getString("background_uri", "")))
} catch (e: Exception) { }
if (background == null)
currentTheme = saveTheme(this, "finn")
}
// TODO: Don't use actual themes, rather create them on the fly
setTheme(
when (currentTheme) {
when (getSavedTheme(this)) {
"dark" -> R.style.darkTheme
"finn" -> R.style.finnmglasTheme
else -> R.style.customTheme
}
)
setContentView(R.layout.home)
// Start by showing the settings icon
showSettingsIcon()
// As older APIs somehow do not recognize the xml defined onClick
home_settings_icon.setOnClickListener() {
openSettings(this)
overridePendingTransition(R.anim.bottom_up, android.R.anim.fade_out)
}
setTheme()
setOnClicks()
// Load apps list first - speed up settings that way
AsyncTask.execute { viewAdapter =
@ -90,29 +67,23 @@ class HomeActivity : AppCompatActivity(),
}
// First Startup
if (!sharedPref.getBoolean("startedBefore", false)){
if (!launcherPreferences.getBoolean("startedBefore", false)){
startActivity(Intent(this, TutorialActivity::class.java))
tooltipTimer.cancel()
}
}
override fun onStart(){
super.onStart()
// Preferences
val sharedPref = this.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE)
loadSettings(sharedPref)
if (currentTheme == "custom") {
home_settings_icon.setTextColor(vibrantColor)
}
super<AppCompatActivity>.onStart()
super<UIObject>.onStart()
mDetector = GestureDetectorCompat(this, this)
mDetector.setOnDoubleTapListener(this)
windowManager.defaultDisplay.getMetrics(displayMetrics)
// for if the settings changed
loadSettings(launcherPreferences)
}
override fun onResume() {
@ -161,15 +132,6 @@ class HomeActivity : AppCompatActivity(),
return true
}
fun dateViewOnTouch(v: View) {
launch(calendarApp, this)
overridePendingTransition(0, 0)
}
fun timeViewOnTouch(v: View) {
launch(clockApp,this)
overridePendingTransition(0, 0)
}
override fun onFling(e1: MotionEvent, e2: MotionEvent, dX: Float, dY: Float): Boolean {
val width = displayMetrics.widthPixels
@ -240,14 +202,43 @@ class HomeActivity : AppCompatActivity(),
settingsIconShown = false
}
fun settingsIconOnTouch(view: View){
openSettings(this)
}
override fun onTouchEvent(event: MotionEvent): Boolean {
return if (mDetector.onTouchEvent(event)) { false } else { super.onTouchEvent(event) }
}
override fun setTheme() {
// Start by showing the settings icon
showSettingsIcon()
if (currentTheme == "custom") {
home_settings_icon.setTextColor(vibrantColor)
try {
background = MediaStore.Images.Media.getBitmap(this.contentResolver, Uri.parse(
launcherPreferences.getString("background_uri", "")))
} catch (e: Exception) { }
if (background == null)
currentTheme = saveTheme(this, "finn")
}
}
override fun setOnClicks() {
home_settings_icon.setOnClickListener() {
openSettings(this)
overridePendingTransition(R.anim.bottom_up, android.R.anim.fade_out)
}
home_date_view.setOnClickListener() {
launch(calendarApp, this)
overridePendingTransition(0, 0)
}
home_time_view.setOnClickListener() {
launch(clockApp,this)
overridePendingTransition(0, 0)
}
}
/* TODO: Remove those. For now they are necessary
* because this inherits from GestureDetector.OnGestureListener */
override fun onDoubleTapEvent(event: MotionEvent): Boolean { return false }