diff --git a/app/build.gradle b/app/build.gradle index 417b55e..0519ff8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.denizd.substitutionplan" minSdkVersion 21 targetSdkVersion 28 - versionCode 32 - versionName "2.2.9" + versionCode 33 + versionName "2.2.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -25,11 +25,11 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.1.0-rc1' + implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.1.0-beta03' - implementation 'com.google.android.material:material:1.1.0-alpha09' + implementation 'androidx.recyclerview:recyclerview:1.1.0-beta04' + implementation 'com.google.android.material:material:1.1.0-alpha10' implementation 'com.android.support:customtabs:28.0.0' implementation 'com.google.firebase:firebase-core:17.1.0' diff --git a/app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt b/app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt index 7c5b8ec..c0befca 100644 --- a/app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt +++ b/app/src/main/java/com/denizd/substitutionplan/activities/FirstTime.kt @@ -1,5 +1,6 @@ package com.denizd.substitutionplan.activities +import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.content.SharedPreferences @@ -35,38 +36,24 @@ internal class FirstTime : AppCompatActivity(R.layout.activity_first_time) { super.onCreate(savedInstanceState) val window = this.window + context = this - when (AppCompatDelegate.getDefaultNightMode()) { - AppCompatDelegate.MODE_NIGHT_NO, AppCompatDelegate.MODE_NIGHT_UNSPECIFIED -> { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - window.statusBarColor = ContextCompat.getColor(this, - R.color.colorBackground - ) - window.navigationBarColor = ContextCompat.getColor(this, - R.color.colorBackground - ) - } else { - window.statusBarColor = ContextCompat.getColor(this, - R.color.legacyBlack - ) - window.navigationBarColor = ContextCompat.getColor(this, - R.color.legacyBlack - ) - } - } - else -> { - window.navigationBarColor = ContextCompat.getColor(this, - R.color.colorBackground - ) - window.statusBarColor = ContextCompat.getColor(this, - R.color.colorBackground - ) -// window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE + val barColour = when { + Build.VERSION.SDK_INT < Build.VERSION_CODES.M -> ContextCompat.getColor(context, R.color.legacyBlack) + Build.VERSION.SDK_INT <= Build.VERSION_CODES.P -> ContextCompat.getColor(context, R.color.colorBackground) + else -> 0 + } + if (barColour != 0) { + window.navigationBarColor = barColour + window.statusBarColor = barColour + } + if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_NO) { + if (Build.VERSION.SDK_INT in 23..28) { + @SuppressLint("InlinedApi") + window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR } } - context = this prefs = PreferenceManager.getDefaultSharedPreferences(context) as SharedPreferences val edit = prefs.edit() val fab = findViewById(R.id.efab) @@ -81,6 +68,10 @@ internal class FirstTime : AppCompatActivity(R.layout.activity_first_time) { val helpCourses = findViewById(R.id.chipHelpCourses) val greeting = findViewById(R.id.cbGreetings) + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + dark.visibility = View.GONE + } + helpClasses.setOnClickListener { createDialog(getString(R.string.enterGradeHelpTitle), getString( R.string.enterGradeHelp @@ -94,23 +85,6 @@ internal class FirstTime : AppCompatActivity(R.layout.activity_first_time) { val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater -// findViewById(R.id.btnRestoreFromFile).setOnClickListener { -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { -// requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 42) -// } -// HelperFunctions.readPrefsFromXml(prefs) -// name.setText(prefs.getString("username", "")) -// grade.setText(prefs.getString("classes", "")) -// courses.setText(prefs.getString("courses", "")) -// notif.isChecked = prefs.getBoolean("notif", false) -// dark.isChecked = when (prefs.getInt("themeInt", 0)) { -// 0 -> true -// else -> false -// } -// greeting.isChecked = prefs.getBoolean("greeting", false) -// pers.isChecked = prefs.getBoolean("defaultPersonalised", false) -// } - fab.setOnClickListener { fab.isClickable = false @@ -118,11 +92,16 @@ internal class FirstTime : AppCompatActivity(R.layout.activity_first_time) { .putString("username", name.text.toString()) .putString("classes", grade.text.toString()) .putString("courses", courses.text.toString()) - if (dark.isChecked) { - edit.putInt("themeInt", 1) + val themeInt = if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + 2 } else { - edit.putInt("themeInt", 0) + if (dark.isChecked) { + 1 + } else { + 0 + } } + edit.putInt("themeInt", themeInt) edit.putBoolean("notif", notif.isChecked) .putBoolean("greeting", greeting.isChecked) .putBoolean("defaultPersonalised", pers.isChecked) @@ -146,7 +125,7 @@ internal class FirstTime : AppCompatActivity(R.layout.activity_first_time) { val colour = findViewById(R.id.colourLayout) linearInflation.visibility = View.VISIBLE anim.start() - fab.hide(true) + fab.hide() handler.postDelayed({ colour.startAnimation(animOut) diff --git a/app/src/main/java/com/denizd/substitutionplan/activities/Main.kt b/app/src/main/java/com/denizd/substitutionplan/activities/Main.kt index 619511e..3dc5d7d 100644 --- a/app/src/main/java/com/denizd/substitutionplan/activities/Main.kt +++ b/app/src/main/java/com/denizd/substitutionplan/activities/Main.kt @@ -1,5 +1,6 @@ package com.denizd.substitutionplan.activities +import android.annotation.SuppressLint import android.app.job.JobInfo import android.app.job.JobScheduler import android.content.ComponentName @@ -31,7 +32,6 @@ import com.google.android.material.appbar.AppBarLayout import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.snackbar.Snackbar import com.google.firebase.FirebaseApp -import com.jaredrummler.android.device.DeviceName import java.lang.IllegalArgumentException import java.util.* @@ -73,21 +73,22 @@ internal class Main : AppCompatActivity(R.layout.app_bar_main) { setTheme(R.style.AppTheme0) - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - window.statusBarColor = ContextCompat.getColor(this, - R.color.legacyBlack - ) - window.navigationBarColor = ContextCompat.getColor(this, - R.color.legacyBlack - ) + val barColour = when { + Build.VERSION.SDK_INT < Build.VERSION_CODES.M -> ContextCompat.getColor(context, R.color.legacyBlack) + Build.VERSION.SDK_INT <= Build.VERSION_CODES.P -> ContextCompat.getColor(context, R.color.colorBackground) + else -> 0 + } + if (barColour != 0) { + window.navigationBarColor = barColour + window.statusBarColor = barColour } when (prefs.getInt("themeInt", 0)) { 0 -> { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) if (Build.VERSION.SDK_INT in 23..28) { + @SuppressLint("InlinedApi") window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - window.navigationBarColor = ContextCompat.getColor(context, R.color.colorBackground) } } 2 -> { @@ -95,9 +96,6 @@ internal class Main : AppCompatActivity(R.layout.app_bar_main) { } else -> { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) { - window.navigationBarColor = ContextCompat.getColor(context, R.color.colorBackground) - } } } @@ -107,24 +105,6 @@ internal class Main : AppCompatActivity(R.layout.app_bar_main) { } catch (e: IllegalArgumentException) {} } - if (prefs.getBoolean("huaweiDeviceDialog", true)) { - DeviceName.with(context).request { info, _ -> - if (info.manufacturer.contains("Huawei") || - info.manufacturer.contains("Honor") || - info.manufacturer.contains("Xiaomi")) { - val alertDialog = AlertDialog.Builder(context, R.style.AlertDialog) - val dialogView = LayoutInflater.from(context).inflate(R.layout.secret_dialog, null) - val title = dialogView.findViewById(R.id.textviewtitle) - title.text = getString(R.string.chineseDevicesTitle) - val dialogText = dialogView.findViewById(R.id.dialogtext) - dialogText.text = getString(R.string.chineseDevicesHelp) - alertDialog.setView(dialogView).show() - - edit.putBoolean("huaweiDeviceDialog", false).apply() - } - } - } - val textViewGreeting = findViewById(R.id.text_greeting) if (prefs.getBoolean("greeting", true)) { if ((prefs.getString("username", "") ?: "").isNotEmpty()) { diff --git a/app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt b/app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt index 8206c51..ee7709b 100644 --- a/app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt +++ b/app/src/main/java/com/denizd/substitutionplan/adapters/CardAdapter.kt @@ -1,8 +1,8 @@ package com.denizd.substitutionplan.adapters import android.content.ActivityNotFoundException +import android.content.SharedPreferences import android.net.Uri -import android.preference.PreferenceManager import android.text.SpannableString import android.text.style.StrikethroughSpan import android.view.LayoutInflater @@ -20,7 +20,7 @@ import com.denizd.substitutionplan.models.Subst import com.google.android.material.card.MaterialCardView import java.util.* -internal class CardAdapter(private var mSubst: List) : RecyclerView.Adapter() { +internal class CardAdapter(private var mSubst: List, private val prefs: SharedPreferences) : RecyclerView.Adapter() { private var colour = 0 private var colourString = "" @@ -28,25 +28,25 @@ internal class CardAdapter(private var mSubst: List) : RecyclerView.Adapt class CardViewHolder(view: View) : RecyclerView.ViewHolder(view), View.OnClickListener { - var mImageView: ImageView = view.findViewById(R.id.iconView) - var mGroup: TextView = view.findViewById(R.id.group) - var mDate: TextView = view.findViewById(R.id.date) - var mTime: TextView = view.findViewById(R.id.time) - var mCourse: TextView = view.findViewById(R.id.course) - var mRoom: TextView = view.findViewById(R.id.room) - var mAdditional: TextView = view.findViewById(R.id.additional) - var spacer: TextView = view.findViewById(R.id.spacer) + var iconView: ImageView = view.findViewById(R.id.iconView) + var group: TextView = view.findViewById(R.id.group) + var date: TextView = view.findViewById(R.id.date) + var time: TextView = view.findViewById(R.id.time) + var course: TextView = view.findViewById(R.id.course) + var room: TextView = view.findViewById(R.id.room) + var additional: TextView = view.findViewById(R.id.additional) var teacher: TextView = view.findViewById(R.id.teacher) + var spacer: TextView = view.findViewById(R.id.spacer) - var mCard: MaterialCardView = view.findViewById(R.id.planCard) + var card: MaterialCardView = view.findViewById(R.id.planCard) init { view.setOnClickListener(this) } override fun onClick(v: View?) { - if (mDate.text.toString().length > 7 && mDate.text.toString().substring(3, 7) == "http") { + if (date.text.toString().length > 7 && date.text.toString().substring(3, 7) == "http") { try { - CustomTabsIntent.Builder().build().launchUrl(mCard.context, - Uri.parse(mDate.text.toString().substring(3))) + CustomTabsIntent.Builder().build().launchUrl(card.context, + Uri.parse(date.text.toString().substring(3))) } catch (e: ActivityNotFoundException) { - Toast.makeText(mCard.context, mCard.context.getString(R.string.chromeCompatibleNotFound), Toast.LENGTH_LONG).show() + Toast.makeText(card.context, card.context.getString(R.string.chromeCompatibleNotFound), Toast.LENGTH_LONG).show() } } } @@ -59,70 +59,60 @@ internal class CardAdapter(private var mSubst: List) : RecyclerView.Adapt override fun onBindViewHolder(holder: CardViewHolder, position: Int) { val currentItem = mSubst[position] - val prefs = PreferenceManager.getDefaultSharedPreferences(holder.mImageView.context) var psa = false val strings = arrayOf(SpannableString(currentItem.group), SpannableString(currentItem.time), SpannableString(currentItem.course), SpannableString(currentItem.room), SpannableString(currentItem.teacher)) - for (item in strings) { - val qmark = item.indexOf("?") - if (qmark != -1) { - item.setSpan(StrikethroughSpan(), 0, qmark, 0) + var cardBackgroundColour = 0 + + for (string in strings) { + val questionMarkIndex = string.indexOf("?") + if (questionMarkIndex != -1) { + string.setSpan(StrikethroughSpan(), 0, questionMarkIndex, 0) } } with (currentItem.additional.toLowerCase(Locale.ROOT)) { if (contains("eigenverantwortliches arbeiten") || contains("entfall") || contains("fällt aus")) { - strings[2].setSpan(StrikethroughSpan(), 0, strings[2].length, 0) - strings[3].setSpan(StrikethroughSpan(), 0, strings[3].length, 0) - strings[4].setSpan(StrikethroughSpan(), 0, strings[4].length, 0) + for (i in 2..4) { strings[i].setSpan(StrikethroughSpan(), 0, strings[i].length, 0) } } } - holder.mImageView.setImageResource(HelperFunctions.getIconForCourse(currentItem.course)) - holder.mGroup.setText(strings[0], TextView.BufferType.SPANNABLE) - holder.mTime.setText(strings[1], TextView.BufferType.SPANNABLE) - holder.mCourse.setText(strings[2], TextView.BufferType.SPANNABLE) - holder.mRoom.setText(strings[3], TextView.BufferType.SPANNABLE) + var icon = HelperFunctions.getIconForCourse(currentItem.course) + holder.group.setText(strings[0], TextView.BufferType.SPANNABLE) + holder.time.setText(strings[1], TextView.BufferType.SPANNABLE) + holder.course.setText(strings[2], TextView.BufferType.SPANNABLE) + holder.room.setText(strings[3], TextView.BufferType.SPANNABLE) holder.teacher.setText(strings[4], TextView.BufferType.SPANNABLE) - holder.mAdditional.text = currentItem.additional + holder.additional.text = currentItem.additional - if (currentItem.date.isNotEmpty() && currentItem.date.substring(0, 3) == "psa") { + holder.date.visibility = if (currentItem.date.isNotEmpty() && currentItem.date.substring(0, 3) == "psa") { psa = true - holder.mDate.visibility = View.GONE - holder.mDate.text = currentItem.date - holder.mTime.text = " " - holder.mImageView.setImageResource(R.drawable.ic_idea) - holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mImageView.context, - R.color.colorAccent - )) + holder.time.text = " " + icon = R.drawable.ic_idea + cardBackgroundColour = R.color.colorAccent + View.GONE } else { - holder.mDate.visibility = View.VISIBLE - holder.mDate.text = currentItem.date - } - - if (!psa) { - colourString = getColourString(holder.mCourse.text.toString()) + colourString = getColourString(holder.course.text.toString()) val colourPrefsInt = if (colourString.isNotEmpty()) { prefs.getString("card$colourString", "") ?: "" } else { "" } colour = HelperFunctions.getColourForString(colourPrefsInt) - if (colour != 0) { - holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mCourse.context, colour)) + cardBackgroundColour = if (colour != 0) { + colour } else { - holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mCourse.context, - R.color.colorBackgroundLight - )) + R.color.colorBackgroundLight } + View.VISIBLE } - + holder.date.text = currentItem.date holder.spacer.visibility = if (strings[2].isEmpty() || strings[4].isEmpty()) { View.GONE } else { View.VISIBLE } - val textColor = ContextCompat.getColor(holder.mImageView.context, if (psa) { + val textColor = ContextCompat.getColor(holder.iconView.context, if (psa) { R.color.colorBackground } else { when (colour) { @@ -131,13 +121,15 @@ internal class CardAdapter(private var mSubst: List) : RecyclerView.Adapt else -> R.color.colorText } }) - holder.mImageView.setColorFilter(textColor) - holder.mGroup.setTextColor(textColor) - holder.mDate.setTextColor(textColor) - holder.mTime.setTextColor(textColor) - holder.mCourse.setTextColor(textColor) - holder.mRoom.setTextColor(textColor) - holder.mAdditional.setTextColor(textColor) + holder.card.setCardBackgroundColor(ContextCompat.getColor(holder.iconView.context, cardBackgroundColour)) + holder.iconView.setImageResource(icon) + holder.iconView.setColorFilter(textColor) + holder.group.setTextColor(textColor) + holder.date.setTextColor(textColor) + holder.time.setTextColor(textColor) + holder.course.setTextColor(textColor) + holder.room.setTextColor(textColor) + holder.additional.setTextColor(textColor) holder.spacer.setTextColor(textColor) holder.teacher.setTextColor(textColor) } diff --git a/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt b/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt index cd408d6..78c700f 100644 --- a/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt +++ b/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt @@ -9,9 +9,7 @@ import android.content.SharedPreferences import android.content.pm.PackageManager import android.graphics.Color import android.os.Environment -import android.util.Log import android.widget.Toast -import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat.requestPermissions import androidx.core.content.ContextCompat.checkSelfPermission import androidx.fragment.app.FragmentActivity @@ -31,7 +29,8 @@ internal object HelperFunctions { val colourNames = arrayOf("default", "red", "orange", "yellow", "green", "teal", "cyan", "blue", "purple", "pink", "brown", "grey", "pureWhite", "salmon", "tangerine", "banana", "flora", "spindrift", "sky", "orchid", "lavender", "carnation", "brown2", "pureBlack") - private val colourIntegers = intArrayOf(0, + private val colourIntegers = intArrayOf( + 0, R.color.bgRed, R.color.bgOrange, R.color.bgYellow, @@ -250,7 +249,6 @@ internal object HelperFunctions { for (i in localPrefTypes.indices) { val key = document.getElementsByTagName("key").item(i).textContent val value = document.getElementsByTagName("value").item(i).textContent - Log.d("VALUES", "$key $value") setPrefValue(prefs, key, value, localPrefTypes[i]) } Toast.makeText(context, context.getString(R.string.success), Toast.LENGTH_LONG).show() diff --git a/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt b/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt index fc55210..2b67a79 100644 --- a/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt +++ b/app/src/main/java/com/denizd/substitutionplan/database/SubstDatabase.kt @@ -19,8 +19,7 @@ internal abstract class SubstDatabase : RoomDatabase() { private var instance: SubstDatabase? = null private val addTeacherColumn = object : Migration(5, 6) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL( - "ALTER TABLE subst_table ADD COLUMN teacher TEXT NOT NULL DEFAULT ''") + database.execSQL("ALTER TABLE subst_table ADD COLUMN teacher TEXT NOT NULL DEFAULT ''") } } diff --git a/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt index ddca1cb..8043224 100644 --- a/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt @@ -57,7 +57,7 @@ internal open class PlanFragment : Fragment(R.layout.plan) { layoutManager = GridLayoutManager(mContext, getGridColumnCount(resources.configuration)) recyclerView.layoutManager = layoutManager - mAdapter = CardAdapter(planCardList) + mAdapter = CardAdapter(planCardList, prefs) recyclerView.adapter = mAdapter if (prefs.getInt("firstTimeOpening", 0) == 1) { diff --git a/app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt index 29a97fd..4106585 100644 --- a/app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/SettingsFragment.kt @@ -45,9 +45,6 @@ internal class SettingsFragment : Fragment(R.layout.content_settings), View.OnCl ColourAdapter.OnClickListener, RingtoneAdapter.OnClickListener { - private var name = "" - private var model = "" - private lateinit var mContext: Context private lateinit var prefs: SharedPreferences private lateinit var edit: SharedPreferences.Editor @@ -490,11 +487,6 @@ internal class SettingsFragment : Fragment(R.layout.content_settings), View.OnCl } private fun debugMenu(): Boolean { - DeviceName.with(mContext).request { deviceInfo, _ -> - name = deviceInfo.marketName - model = deviceInfo.model - } - val alertDialog = AlertDialog.Builder(mContext, R.style.AlertDialog ) @@ -593,8 +585,8 @@ internal class SettingsFragment : Fragment(R.layout.content_settings), View.OnCl return "First Launch: ${prefs.getString("firstTimeDev", "")}" + "\n\nApp launched: ${prefs.getInt("launchDev", 0)}" + "\n\nFirebase ping service fired: ${prefs.getInt("pingFB", 0)}" + - "\n\nDevice Name: $name" + - "\n\nDevice Model: $model" + + "\n\nDevice Name: ${Build.DEVICE}" + + "\n\nDevice Model: ${Build.MODEL}" + "\n\nAndroid Version: ${Build.VERSION.RELEASE}" + "\n\nSubscribed to notification channel: ${prefs.getBoolean("notif", false)}" + "\n\nSubscribed to dev channel: ${prefs.getBoolean("subscribedToFBDebugChannel", false)}" diff --git a/app/src/main/res/layout/activity_first_time.xml b/app/src/main/res/layout/activity_first_time.xml index 98ccc67..952ecaf 100644 --- a/app/src/main/res/layout/activity_first_time.xml +++ b/app/src/main/res/layout/activity_first_time.xml @@ -19,14 +19,6 @@ android:layout_height="wrap_content" android:layoutAnimation="@anim/layout_animation_fall_down"> - - - - - - - - - - - - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> - - - - - - - - - - - + - - - - - - - - - - - - - - + + + + + + + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 80ae3ad..606b3ee 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -16,15 +16,29 @@ + + + android:layout_height="wrap_content"> + + - - + app:layout_constraintEnd_toEndOf="parent"/> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 8420d4b..6c4bd16 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -63,8 +63,6 @@ Diagnosemenü Kursbenachrichtigungen aktivieren Kein Entfall für dich - Einige chinesische Hersteller, wie Huawei/Honor und Xiaomi, unterdrücken Hintergrund-Services, weshalb Benachrichtungen und Hintergrund-Synchronisation nicht funktionieren.\n\nIch habe feststellen müssen, dass es keine einfache Lösung dafür gibt, die ich einbauen könnte.\n\nStattdessen kannst du jedoch versuchen, App-Optimierungen für diese App zu deaktivieren:\n\nSchließe die App und öffne \"Einstellungen\" -> \"Apps\" -> \"AvH-Plan\" -> \"Akku\" -> \"App-Start\" -> \"Automatisch verwalten\" deaktivieren, \"Im Hintergrund ausführen\" aktivieren.\n\nDies kann unter Umständen keinen Einfluss haben. - Informationen bezüglich deines Gerätes Benutzerdefinierte Farben Farben für jedes Fach einstellen Deutsch (+ DAZ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8378b14..fd54b77 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -73,9 +73,6 @@ Invalid code No substitutions for you - Information regarding your device - Some Chinese manufacturers, such as Huawei/Honor and Xiaomi, heavily suppress background services, which results in notifications and background synchronisation not working.\n\nFrom my current research, I have determined that there\'s no easy workaround I can implement.\n\nYou can, however, try to disable power optimisation for this app in the settings:\n\nClose the app and open \"Settings\" -> \"Apps\" -> \"AvH Plan\" -> \"Battery\" -> \"Launch\" -> disable \"Manage automatically\", enable \"Run in background\"\n\nThis is not guaranteed to work. - Customise colours Customise every subject individually