Rudimentary clock aligment setting functionality added

This commit is contained in:
ottoptj 2024-07-05 00:29:39 +03:00
commit 01b7400083
5 changed files with 102 additions and 12 deletions

View file

@ -20,15 +20,19 @@ import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.Spinner
import android.widget.TextClock
import android.widget.TextView
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.view.marginLeft
import androidx.recyclerview.widget.RecyclerView
import eu.ottop.yamlauncher.databinding.ActivityMainBinding
import kotlinx.coroutines.CoroutineScope
@ -56,7 +60,6 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
val cameraIntent = Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE)
val phoneIntent = Intent(Intent.ACTION_DIAL)
private lateinit var batteryReceiver: BatteryReceiver
private lateinit var dateText: TextClock
private var appActionMenu = AppActionMenu()
private val sharedPreferenceManager = SharedPreferenceManager()
@ -64,11 +67,14 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
private val appMenuLinearLayoutManager = AppMenuLinearLayoutManager(this@MainActivity)
private val appMenuEdgeFactory = AppMenuEdgeFactory(this@MainActivity)
private val animations = Animations()
private val weatherSystem = WeatherSystem()
private val swipeThreshold = 100
private val swipeVelocityThreshold = 100
private lateinit var clock: TextClock
private var clockMargin = 0
private lateinit var constraintLayout: ConstraintLayout
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -81,6 +87,12 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
gestureDetector = GestureDetector(this, GestureListener())
shortcutGestureDetector = GestureDetector(this, TextGestureListener())
clock = findViewById(R.id.text_clock)
clockMargin = clock.marginLeft
constraintLayout = findViewById(R.id.clock_layout)
setupApps()
val dateText = findViewById<TextClock>(R.id.text_date)
@ -105,6 +117,7 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
super.onNewIntent(intent)
}
override fun onStop() {
super.onStop()
job?.cancel()
@ -118,13 +131,17 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
override fun onStart() {
super.onStart()
startTask()
// Keyboard is sometimes open when going back to the app, so close it.
closeKeyboard()
}
override fun onResume() {
super.onResume()
setClockAlignment()
}
open inner class GestureListener : GestureDetector.SimpleOnGestureListener() {
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
@ -513,6 +530,49 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap
return true
}
private fun setClockAlignment() {
val clockAlignment = sharedPreferenceManager.getClockAlignment(this@MainActivity)
val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayout)
println(clockAlignment)
/*
0 = left
1 = center
2 = right
*/
if (clockAlignment == 2) {
constraintSet.clear(clock.id, ConstraintSet.START)
}
else if (clockAlignment == 0) {
constraintSet.clear(clock.id, ConstraintSet.END)
}
if (clockAlignment == 1 || clockAlignment == 0) {
constraintSet.connect(
clock.id,
ConstraintSet.START,
ConstraintSet.PARENT_ID,
ConstraintSet.START,
clockMargin
)
}
if (clockAlignment != 0) {
constraintSet.connect(
clock.id,
ConstraintSet.END,
ConstraintSet.PARENT_ID,
ConstraintSet.END,
clockMargin
)
}
constraintSet.applyTo(constraintLayout)
}
fun isJobActive(): Boolean {
return if (job != null) {
job!!.isActive

View file

@ -2,15 +2,31 @@ package eu.ottop.yamlauncher
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import eu.ottop.yamlauncher.databinding.ActivityMainBinding
import android.view.View
import android.widget.AdapterView
import android.widget.Spinner
import eu.ottop.yamlauncher.databinding.ActivitySettingsBinding
class SettingsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsBinding
private val sharedPreferenceManager = SharedPreferenceManager()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.clockAlignment.setSelection(sharedPreferenceManager.getClockAlignment(this@SettingsActivity))
binding.clockAlignment.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
// Get the selected item
sharedPreferenceManager.setClockAlignment(this@SettingsActivity, position)
println(position)
}
override fun onNothingSelected(parent: AdapterView<*>) {
}
}
}
}

View file

@ -72,4 +72,17 @@ class SharedPreferenceManager {
val key = "location"
return sharedPreferences.getString(key, null)
}
fun setClockAlignment(cont: Context, alignment: Int) {
val editor = cont.getSharedPreferences("preferences", AppCompatActivity.MODE_PRIVATE).edit()
val key = "clock_alignment"
editor.putInt(key, alignment)
editor.apply()
}
fun getClockAlignment(cont: Context) : Int {
val sharedPreferences = cont.getSharedPreferences("preferences", AppCompatActivity.MODE_PRIVATE)
val key = "clock_alignment"
return sharedPreferences.getInt(key, 0)
}
}

View file

@ -81,6 +81,7 @@
android:visibility="visible">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clock_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">

View file

@ -9,7 +9,7 @@
tools:context=".SettingsActivity">
<TextView
android:id="@+id/clock_alignment"
android:id="@+id/clock_alignment_label"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:clickable="false"
@ -24,21 +24,21 @@
android:textSize="20sp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/spinner"
app:layout_constraintEnd_toStartOf="@+id/clock_alignment"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<Spinner
android:id="@+id/spinner"
android:id="@+id/clock_alignment"
android:layout_width="0dp"
android:layout_height="0dp"
android:entries="@array/clock_alignment_options"
android:spinnerMode="dropdown"
app:layout_constraintBottom_toBottomOf="@+id/clock_alignment"
app:layout_constraintBottom_toBottomOf="@+id/clock_alignment_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/clock_alignment"
app:layout_constraintTop_toTopOf="@+id/clock_alignment"
app:layout_constraintStart_toEndOf="@+id/clock_alignment_label"
app:layout_constraintTop_toTopOf="@+id/clock_alignment_label"
app:layout_constraintVertical_bias="0.1" />
<View
@ -46,7 +46,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
app:layout_constraintBottom_toBottomOf="@+id/clock_alignment" />
app:layout_constraintBottom_toBottomOf="@+id/clock_alignment_label" />
<TextView
android:id="@+id/home_app_alignment"
@ -64,7 +64,7 @@
android:textSize="20sp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/spinner"
app:layout_constraintEnd_toStartOf="@+id/clock_alignment"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/divider2"