diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt index 7621425..5c5d98f 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt @@ -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(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 diff --git a/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt index f468bfd..4139221 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt @@ -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<*>) { + } + } } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt b/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt index 67ad565..1b6c8f6 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt @@ -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) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c864dc0..140ae6c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -81,6 +81,7 @@ android:visibility="visible"> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index e573691..6ed414c 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -9,7 +9,7 @@ tools:context=".SettingsActivity"> + app:layout_constraintBottom_toBottomOf="@+id/clock_alignment_label" />