diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..9ba2af6 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +TimerT \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 74dd639..b2c751a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ec4d186..a191c3a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,9 @@ android:supportsRtl="true" android:theme="@style/Theme.TimerT" tools:targetApi="31"> + diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..ffebcc2 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/example/timert/MainActivity.kt b/app/src/main/java/com/example/timert/MainActivity.kt index 0466d31..ab134be 100644 --- a/app/src/main/java/com/example/timert/MainActivity.kt +++ b/app/src/main/java/com/example/timert/MainActivity.kt @@ -3,6 +3,7 @@ package com.example.timert import android.content.Intent import android.os.Bundle import android.widget.Button +import android.widget.Toast import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat @@ -18,18 +19,30 @@ class MainActivity : AppCompatActivity() { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } - var button: Button = findViewById(R.id.button1) - button.setOnClickListener{ - val intent = Intent(this,timer::class.java) + // Кнопки главной формы: + val settingsButton: Button = findViewById(R.id.settingsButton) + settingsButton.setOnClickListener { + val intent = Intent(this, SettingsActivity::class.java) startActivity(intent) } - var button2: Button = findViewById(R.id.button2) - button2.setOnClickListener{ - val intent = Intent(this,CreatingTraining::class.java) - startActivity(intent) + val startTrainingButton: Button = findViewById(R.id.startTrainingButton) + startTrainingButton.setOnClickListener { + Toast.makeText(this, "Запуск тренировки!", Toast.LENGTH_SHORT).show() // Заглушка + //TODO: Intent для запуска Activity тренировки (форма 5) + } + + val templatesButton: Button = findViewById(R.id.templatesButton) + templatesButton.setOnClickListener { + Toast.makeText(this, "Открытие шаблонов!", Toast.LENGTH_SHORT).show() // Заглушка + //TODO: Intent для открытия Activity шаблонов (форма 3) + } + + val newTemplateButton: Button = findViewById(R.id.newTemplateButton) + newTemplateButton.setOnClickListener { + Toast.makeText(this, "Создание нового шаблона!", Toast.LENGTH_SHORT).show() // Заглушка + //TODO: Intent для открытия Activity создания шаблона (форма 3) } } - } \ No newline at end of file diff --git a/app/src/main/java/com/example/timert/SettingsActivity.kt b/app/src/main/java/com/example/timert/SettingsActivity.kt new file mode 100644 index 0000000..b7b5df6 --- /dev/null +++ b/app/src/main/java/com/example/timert/SettingsActivity.kt @@ -0,0 +1,83 @@ +package com.example.timert + +import android.content.Context +import android.content.pm.PackageManager +import android.os.Bundle +import android.widget.Switch +import android.widget.TextView +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate +import android.widget.Button +import androidx.appcompat.app.AlertDialog +import androidx.core.text.HtmlCompat + +class SettingsActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_settings2) + + val versionTextView: TextView = findViewById(R.id.versionTextView) + val darkModeSwitch: Switch = findViewById(R.id.darkModeSwitch) + val aboutButton: Button = findViewById(R.id.aboutButton) + val developersButton: Button = findViewById(R.id.developersButton) + + // Получаем сохраненное состояние темы из SharedPreferences + val sharedPreferences = getSharedPreferences("AppSettings", Context.MODE_PRIVATE) + val isDarkMode = sharedPreferences.getBoolean("DarkMode", false) // По умолчанию - светлая тема + darkModeSwitch.isChecked = isDarkMode + + // Применяем тему + if (isDarkMode) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + } + + try { + val packageInfo = packageManager.getPackageInfo(packageName, 0) + val versionName = packageInfo.versionName + versionTextView.text = "Версия: $versionName" + } catch (e: PackageManager.NameNotFoundException) { + versionTextView.text = "Версия: Неизвестно" + } + + // Устанавливаем слушатель для Switch + darkModeSwitch.setOnCheckedChangeListener { _, isChecked -> + // Сохраняем состояние темы в SharedPreferences + val editor = sharedPreferences.edit() + editor.putBoolean("DarkMode", isChecked) + editor.apply() + + // Применяем тему + if (isChecked) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + } + } + + // Обработчик нажатия на кнопку "О программе" + aboutButton.setOnClickListener { + AlertDialog.Builder(this) + .setTitle("О программе") + .setMessage("Краткое описание пользования приложением.\n\nНапример: Это приложение позволяет тренироваться, чтобы быть как арнольдшварцнигер 😄") + .setPositiveButton("ОК", null) + .show() + } + + // Обработчик нажатия на кнопку "Разработчики" + developersButton.setOnClickListener { + AlertDialog.Builder(this) + .setTitle("Разработчики") + .setMessage(HtmlCompat.fromHtml( + "

Вятский государственный университет


" + + "

Емцова Надежда Александровна

" + + "

Новиков Николай Алексеевич

" + + "

Пискун Алёна Викторовна

", + HtmlCompat.FROM_HTML_MODE_LEGACY + )) + .setPositiveButton("ОК", null) + .show() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/timert/timer.kt b/app/src/main/java/com/example/timert/timer.kt index b056dd2..b4679a9 100644 --- a/app/src/main/java/com/example/timert/timer.kt +++ b/app/src/main/java/com/example/timert/timer.kt @@ -40,20 +40,20 @@ class timer : AppCompatActivity() { - val pauseButton: ImageButton = findViewById(R.id.play) + val pauseButton: ImageButton = findViewById(R.id.play) - pauseButton.setOnClickListener { - if (isPlay) { + pauseButton.setOnClickListener { + if (isPlay) { - pauseButton.setImageResource(R.drawable.icon_play) - // здесь ещё можно возобновить таймер - } else { + pauseButton.setImageResource(R.drawable.icon_play) + // здесь ещё можно возобновить таймер + } else { - pauseButton.setImageResource(R.drawable.icon_pause) - // здесь можно остановить таймер - } - isPlay = !isPlay + pauseButton.setImageResource(R.drawable.icon_pause) + // здесь можно остановить таймер } + isPlay = !isPlay + } diff --git a/app/src/main/res/drawable/background_image2.jpg b/app/src/main/res/drawable/background_image2.jpg new file mode 100644 index 0000000..e588b6d Binary files /dev/null and b/app/src/main/res/drawable/background_image2.jpg differ diff --git a/app/src/main/res/drawable/background_imagemain.jpg b/app/src/main/res/drawable/background_imagemain.jpg new file mode 100644 index 0000000..13a1695 Binary files /dev/null and b/app/src/main/res/drawable/background_imagemain.jpg differ diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..98ff8f0 --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index eef9b18..6f70a08 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,24 +7,92 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + android:scaleType="centerCrop" + android:src="@drawable/background_imagemain" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + +