diff --git a/app/src/main/java/com/dano/test1/MainActivity.kt b/app/src/main/java/com/dano/test1/MainActivity.kt index fe96e8b..9f01465 100644 --- a/app/src/main/java/com/dano/test1/MainActivity.kt +++ b/app/src/main/java/com/dano/test1/MainActivity.kt @@ -13,7 +13,12 @@ import android.widget.ProgressBar import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity -import java.io.File +import com.dano.test1.auth.LoginManager +import com.dano.test1.auth.TokenStore +import com.dano.test1.network.DatabaseDownloader +import com.dano.test1.questionnaire.QuestionnaireBase +import com.dano.test1.ui.HandlerOpeningScreen +import com.dano.test1.util.LanguageManager class MainActivity : AppCompatActivity() { diff --git a/app/src/main/java/com/dano/test1/LoginManager.kt b/app/src/main/java/com/dano/test1/auth/LoginManager.kt similarity index 95% rename from app/src/main/java/com/dano/test1/LoginManager.kt rename to app/src/main/java/com/dano/test1/auth/LoginManager.kt index ce7b22d..1f20969 100644 --- a/app/src/main/java/com/dano/test1/LoginManager.kt +++ b/app/src/main/java/com/dano/test1/auth/LoginManager.kt @@ -1,9 +1,9 @@ -package com.dano.test1 +package com.dano.test1.auth import android.app.AlertDialog import android.content.Context +import android.text.InputType import android.util.Log -import android.view.LayoutInflater import android.widget.EditText import android.widget.LinearLayout import android.widget.Toast @@ -96,13 +96,13 @@ object LoginManager { } val etNew = EditText(context).apply { hint = "Neues Passwort" - inputType = android.text.InputType.TYPE_CLASS_TEXT or - android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD + inputType = InputType.TYPE_CLASS_TEXT or + InputType.TYPE_TEXT_VARIATION_PASSWORD } val etRepeat = EditText(context).apply { hint = "Neues Passwort (wiederholen)" - inputType = android.text.InputType.TYPE_CLASS_TEXT or - android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD + inputType = InputType.TYPE_CLASS_TEXT or + InputType.TYPE_TEXT_VARIATION_PASSWORD } container.addView(etNew) container.addView(etRepeat) diff --git a/app/src/main/java/com/dano/test1/TokenStore.kt b/app/src/main/java/com/dano/test1/auth/TokenStore.kt similarity index 98% rename from app/src/main/java/com/dano/test1/TokenStore.kt rename to app/src/main/java/com/dano/test1/auth/TokenStore.kt index 44b950a..b79c5a3 100644 --- a/app/src/main/java/com/dano/test1/TokenStore.kt +++ b/app/src/main/java/com/dano/test1/auth/TokenStore.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.auth import android.content.Context diff --git a/app/src/main/java/com/dano/test1/ExcelExportService.kt b/app/src/main/java/com/dano/test1/export/ExcelExportService.kt similarity index 91% rename from app/src/main/java/com/dano/test1/ExcelExportService.kt rename to app/src/main/java/com/dano/test1/export/ExcelExportService.kt index 744f8af..445cb7d 100644 --- a/app/src/main/java/com/dano/test1/ExcelExportService.kt +++ b/app/src/main/java/com/dano/test1/export/ExcelExportService.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.export import android.content.ContentValues import android.content.Context @@ -7,8 +7,12 @@ import android.net.Uri import android.os.Build import android.os.Environment import android.provider.MediaStore +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp import org.apache.poi.ss.usermodel.Row import org.apache.poi.xssf.usermodel.XSSFWorkbook +import java.io.ByteArrayOutputStream +import java.io.File /* Aufgabe: @@ -37,8 +41,8 @@ class ExcelExportService( val orderedIds = headerRepo.loadOrderedIds() if (orderedIds.isEmpty()) return null - val clients = MyApp.database.clientDao().getAllClients() - val questionnaires = MyApp.database.questionnaireDao().getAll() + val clients = MyApp.Companion.database.clientDao().getAllClients() + val questionnaires = MyApp.Companion.database.questionnaireDao().getAll() val questionnaireIdSet = questionnaires.map { it.id }.toSet() val wb = XSSFWorkbook() @@ -67,9 +71,9 @@ class ExcelExportService( var c = 0 row.createCell(c++).setCellValue((rowIdx + 1).toDouble()) - val completedForClient = MyApp.database.completedQuestionnaireDao().getAllForClient(client.clientCode) + val completedForClient = MyApp.Companion.database.completedQuestionnaireDao().getAllForClient(client.clientCode) val statusMap = completedForClient.associate { it.questionnaireId to it.isDone } - val answers = MyApp.database.answerDao().getAnswersForClient(client.clientCode) + val answers = MyApp.Companion.database.answerDao().getAnswersForClient(client.clientCode) val answerMap = answers.associate { it.questionId to it.answerValue } orderedIds.forEach { id -> @@ -83,7 +87,7 @@ class ExcelExportService( } } - val bytes = java.io.ByteArrayOutputStream().use { bos -> + val bytes = ByteArrayOutputStream().use { bos -> wb.write(bos); bos.toByteArray() } wb.close() @@ -112,7 +116,7 @@ class ExcelExportService( } else { val downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) if (!downloadsDir.exists()) downloadsDir.mkdirs() - val outFile = java.io.File(downloadsDir, filename) + val outFile = File(downloadsDir, filename) outFile.writeBytes(bytes) MediaScannerConnection.scanFile( context, diff --git a/app/src/main/java/com/dano/test1/HeaderOrderRepository.kt b/app/src/main/java/com/dano/test1/export/HeaderOrderRepository.kt similarity index 86% rename from app/src/main/java/com/dano/test1/HeaderOrderRepository.kt rename to app/src/main/java/com/dano/test1/export/HeaderOrderRepository.kt index a9df8ea..e422a11 100644 --- a/app/src/main/java/com/dano/test1/HeaderOrderRepository.kt +++ b/app/src/main/java/com/dano/test1/export/HeaderOrderRepository.kt @@ -1,8 +1,11 @@ -package com.dano.test1 +package com.dano.test1.export import android.content.Context import android.util.Log import android.widget.Toast +import com.dano.test1.util.LanguageManager +import org.apache.poi.ss.usermodel.CellType +import org.apache.poi.ss.usermodel.DateUtil import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.json.JSONArray import java.nio.charset.Charset @@ -63,16 +66,16 @@ class HeaderOrderRepository( for (i in first until last) { val cell = row.getCell(i) ?: continue val value = when (cell.cellType) { - org.apache.poi.ss.usermodel.CellType.STRING -> cell.stringCellValue - org.apache.poi.ss.usermodel.CellType.NUMERIC -> - if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) + CellType.STRING -> cell.stringCellValue + CellType.NUMERIC -> + if (DateUtil.isCellDateFormatted(cell)) cell.dateCellValue.time.toString() else { val n = cell.numericCellValue if (n % 1.0 == 0.0) n.toLong().toString() else n.toString() } - org.apache.poi.ss.usermodel.CellType.BOOLEAN -> cell.booleanCellValue.toString() - org.apache.poi.ss.usermodel.CellType.FORMULA -> cell.richStringCellValue.string + CellType.BOOLEAN -> cell.booleanCellValue.toString() + CellType.FORMULA -> cell.richStringCellValue.string else -> "" }.trim() diff --git a/app/src/main/java/com/dano/test1/AES256Helper.kt b/app/src/main/java/com/dano/test1/network/AES256Helper.kt similarity index 98% rename from app/src/main/java/com/dano/test1/AES256Helper.kt rename to app/src/main/java/com/dano/test1/network/AES256Helper.kt index cabc7f6..70716cf 100644 --- a/app/src/main/java/com/dano/test1/AES256Helper.kt +++ b/app/src/main/java/com/dano/test1/network/AES256Helper.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.network import java.io.File import java.security.SecureRandom @@ -68,4 +68,4 @@ object AES256Helper { cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(key, "AES"), IvParameterSpec(iv)) return cipher.doFinal(ct) } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/dano/test1/DatabaseDownloader.kt b/app/src/main/java/com/dano/test1/network/DatabaseDownloader.kt similarity index 98% rename from app/src/main/java/com/dano/test1/DatabaseDownloader.kt rename to app/src/main/java/com/dano/test1/network/DatabaseDownloader.kt index 39aa418..f5085e2 100644 --- a/app/src/main/java/com/dano/test1/DatabaseDownloader.kt +++ b/app/src/main/java/com/dano/test1/network/DatabaseDownloader.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.network import android.content.Context import android.util.Log diff --git a/app/src/main/java/com/dano/test1/DatabaseUploader.kt b/app/src/main/java/com/dano/test1/network/DatabaseUploader.kt similarity index 99% rename from app/src/main/java/com/dano/test1/DatabaseUploader.kt rename to app/src/main/java/com/dano/test1/network/DatabaseUploader.kt index b054f7c..5450bda 100644 --- a/app/src/main/java/com/dano/test1/DatabaseUploader.kt +++ b/app/src/main/java/com/dano/test1/network/DatabaseUploader.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.network import android.content.Context import android.database.sqlite.SQLiteDatabase diff --git a/app/src/main/java/com/dano/test1/NetworkUtilis.kt b/app/src/main/java/com/dano/test1/network/NetworkUtilis.kt similarity index 97% rename from app/src/main/java/com/dano/test1/NetworkUtilis.kt rename to app/src/main/java/com/dano/test1/network/NetworkUtilis.kt index a59405a..0a2bb0e 100644 --- a/app/src/main/java/com/dano/test1/NetworkUtilis.kt +++ b/app/src/main/java/com/dano/test1/network/NetworkUtilis.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.network import android.content.Context import android.net.ConnectivityManager diff --git a/app/src/main/java/com/dano/test1/HandlerClientCoachCode.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerClientCoachCode.kt similarity index 95% rename from app/src/main/java/com/dano/test1/HandlerClientCoachCode.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerClientCoachCode.kt index 3103ba9..6e70ce6 100644 --- a/app/src/main/java/com/dano/test1/HandlerClientCoachCode.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerClientCoachCode.kt @@ -1,9 +1,13 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.view.View import android.widget.* import android.util.TypedValue import androidx.core.widget.TextViewCompat +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp +import com.dano.test1.R +import com.dano.test1.auth.TokenStore import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -97,7 +101,7 @@ class HandlerClientCoachCode( val dbExistedBefore = dbPath.exists() CoroutineScope(Dispatchers.IO).launch { - val existingClient = MyApp.database.clientDao().getClientByCode(clientCode) + val existingClient = MyApp.Companion.database.clientDao().getClientByCode(clientCode) withContext(Dispatchers.Main) { if (existingClient != null && clientCodeField.isEnabled) { @@ -108,7 +112,7 @@ class HandlerClientCoachCode( goToNextQuestion() if (!dbExistedBefore) { - MyApp.database.close() + MyApp.Companion.database.close() dbPath.delete() val journalFile = layout.context.getDatabasePath("questionnaire_database-journal") journalFile.delete() diff --git a/app/src/main/java/com/dano/test1/HandlerClientNotSigned.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerClientNotSigned.kt similarity index 95% rename from app/src/main/java/com/dano/test1/HandlerClientNotSigned.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerClientNotSigned.kt index 34b91f8..fb3c9af 100644 --- a/app/src/main/java/com/dano/test1/HandlerClientNotSigned.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerClientNotSigned.kt @@ -1,7 +1,9 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.view.View import android.widget.* +import com.dano.test1.util.LanguageManager +import com.dano.test1.R /* Zweck: diff --git a/app/src/main/java/com/dano/test1/HandlerDateSpinner.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerDateSpinner.kt similarity index 96% rename from app/src/main/java/com/dano/test1/HandlerDateSpinner.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerDateSpinner.kt index 55ceede..d414b40 100644 --- a/app/src/main/java/com/dano/test1/HandlerDateSpinner.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerDateSpinner.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.content.Context import android.view.View @@ -8,8 +8,14 @@ import kotlinx.coroutines.* import java.text.SimpleDateFormat import java.util.* import android.util.TypedValue +import android.view.Gravity import androidx.core.widget.TextViewCompat import android.widget.AbsListView +import com.dano.test1.util.LanguageManager +import com.dano.test1.util.Month +import com.dano.test1.util.Months +import com.dano.test1.MyApp +import com.dano.test1.R /* Zweck: @@ -87,7 +93,7 @@ class HandlerDateSpinner( val clientCode = GlobalValues.LAST_CLIENT_CODE if (clientCode.isNullOrBlank()) return@launch - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allAnswersForClient = MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) val myQuestionId = questionnaireMeta + "-" + question.question val dbAnswer = allAnswersForClient.find { it.questionId == myQuestionId }?.answerValue @@ -233,7 +239,7 @@ class HandlerDateSpinner( tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSp) tv.includeFontPadding = true tv.setLineSpacing(0f, 1.2f) - tv.gravity = (tv.gravity and android.view.Gravity.HORIZONTAL_GRAVITY_MASK) or android.view.Gravity.CENTER_VERTICAL + tv.gravity = (tv.gravity and Gravity.HORIZONTAL_GRAVITY_MASK) or Gravity.CENTER_VERTICAL tv.setPadding(tv.paddingLeft, vPadPx, tv.paddingRight, vPadPx) tv.minHeight = rowHeight tv.isSingleLine = true diff --git a/app/src/main/java/com/dano/test1/HandlerGlassScaleQuestion.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerGlassScaleQuestion.kt similarity index 97% rename from app/src/main/java/com/dano/test1/HandlerGlassScaleQuestion.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerGlassScaleQuestion.kt index 503b757..205506a 100644 --- a/app/src/main/java/com/dano/test1/HandlerGlassScaleQuestion.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerGlassScaleQuestion.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.content.Context import android.util.TypedValue @@ -6,6 +6,9 @@ import android.view.Gravity import android.view.View import android.widget.* import androidx.core.widget.TextViewCompat +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp +import com.dano.test1.R import kotlinx.coroutines.* /* @@ -102,7 +105,7 @@ class HandlerGlassScaleQuestion( CoroutineScope(Dispatchers.IO).launch { try { val clientCode = GlobalValues.LAST_CLIENT_CODE ?: return@launch - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allAnswersForClient = MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) val answerMap = allAnswersForClient.associateBy({ it.questionId }, { it.answerValue }) withContext(Dispatchers.Main) { diff --git a/app/src/main/java/com/dano/test1/HandlerLastPage.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerLastPage.kt similarity index 97% rename from app/src/main/java/com/dano/test1/HandlerLastPage.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerLastPage.kt index 55c28d9..5ba05e0 100644 --- a/app/src/main/java/com/dano/test1/HandlerLastPage.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerLastPage.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.view.View import android.widget.* @@ -7,6 +7,9 @@ import kotlinx.coroutines.* import android.util.TypedValue import android.widget.TextView import androidx.core.widget.TextViewCompat +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.R import com.google.android.material.button.MaterialButton /* diff --git a/app/src/main/java/com/dano/test1/HandlerMultiCheckboxQuestion.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerMultiCheckboxQuestion.kt similarity index 97% rename from app/src/main/java/com/dano/test1/HandlerMultiCheckboxQuestion.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerMultiCheckboxQuestion.kt index e24aa26..d912ecd 100644 --- a/app/src/main/java/com/dano/test1/HandlerMultiCheckboxQuestion.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerMultiCheckboxQuestion.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.content.Context import android.view.View @@ -6,6 +6,9 @@ import android.widget.* import kotlinx.coroutines.* import android.util.TypedValue import androidx.core.widget.TextViewCompat +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp +import com.dano.test1.R /* Zweck: @@ -88,7 +91,7 @@ class HandlerMultiCheckboxQuestion( val clientCode = GlobalValues.LAST_CLIENT_CODE if (clientCode.isNullOrBlank()) return@launch - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allAnswersForClient = MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) val myQuestionId = questionnaireMeta + "-" + question.question val dbAnswer = allAnswersForClient.find { it.questionId == myQuestionId }?.answerValue diff --git a/app/src/main/java/com/dano/test1/HandlerRadioQuestion.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerRadioQuestion.kt similarity index 96% rename from app/src/main/java/com/dano/test1/HandlerRadioQuestion.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerRadioQuestion.kt index 59bf3a0..168872f 100644 --- a/app/src/main/java/com/dano/test1/HandlerRadioQuestion.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerRadioQuestion.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.content.Context import android.view.View @@ -7,6 +7,9 @@ import android.widget.* import kotlinx.coroutines.* import android.util.TypedValue import androidx.core.widget.TextViewCompat // <— hinzugefügt +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp +import com.dano.test1.R /* Zweck: @@ -81,7 +84,7 @@ class HandlerRadioQuestion( val clientCode = GlobalValues.LAST_CLIENT_CODE if (clientCode.isNullOrBlank()) return@launch - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allAnswersForClient = MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) val myQuestionId = questionnaireMeta + "-" + question.question val dbAnswer = allAnswersForClient.find { it.questionId == myQuestionId }?.answerValue diff --git a/app/src/main/java/com/dano/test1/HandlerStringSpinner.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerStringSpinner.kt similarity index 94% rename from app/src/main/java/com/dano/test1/HandlerStringSpinner.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerStringSpinner.kt index b101569..094cb2a 100644 --- a/app/src/main/java/com/dano/test1/HandlerStringSpinner.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerStringSpinner.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.content.Context import android.view.View @@ -6,8 +6,13 @@ import android.view.ViewGroup import android.widget.* import kotlinx.coroutines.* import android.util.TypedValue +import android.view.Gravity import android.widget.TextView import androidx.core.widget.TextViewCompat +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp +import com.dano.test1.R +import com.dano.test1.util.Countries /* Zweck: @@ -62,7 +67,7 @@ class HandlerStringSpinner( val clientCode = GlobalValues.LAST_CLIENT_CODE if (clientCode.isNullOrBlank()) return@launch - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allAnswersForClient = MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) val myQuestionId = questionnaireMeta + "-" + question.question val dbAnswer = allAnswersForClient.find { it.questionId == myQuestionId }?.answerValue @@ -146,7 +151,7 @@ class HandlerStringSpinner( tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSp) tv.includeFontPadding = true tv.setLineSpacing(0f, 1.2f) - tv.gravity = (tv.gravity and android.view.Gravity.HORIZONTAL_GRAVITY_MASK) or android.view.Gravity.CENTER_VERTICAL + tv.gravity = (tv.gravity and Gravity.HORIZONTAL_GRAVITY_MASK) or Gravity.CENTER_VERTICAL tv.setPadding(tv.paddingLeft, vPadPx, tv.paddingRight, vPadPx) tv.minHeight = rowHeight tv.isSingleLine = true diff --git a/app/src/main/java/com/dano/test1/HandlerValueSpinner.kt b/app/src/main/java/com/dano/test1/questionnaire/HandlerValueSpinner.kt similarity index 95% rename from app/src/main/java/com/dano/test1/HandlerValueSpinner.kt rename to app/src/main/java/com/dano/test1/questionnaire/HandlerValueSpinner.kt index d831d64..51937d1 100644 --- a/app/src/main/java/com/dano/test1/HandlerValueSpinner.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/HandlerValueSpinner.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.content.Context import android.view.View @@ -6,7 +6,11 @@ import android.view.ViewGroup import android.widget.* import kotlinx.coroutines.* import android.util.TypedValue +import android.view.Gravity import androidx.core.widget.TextViewCompat // <- NEU +import com.dano.test1.util.LanguageManager +import com.dano.test1.MyApp +import com.dano.test1.R /* Zweck: @@ -66,7 +70,7 @@ class HandlerValueSpinner( val clientCode = GlobalValues.LAST_CLIENT_CODE if (clientCode.isNullOrBlank()) return@launch - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allAnswersForClient = MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) val myQuestionId = questionnaireMeta + "-" + question.question val dbAnswer = allAnswersForClient.find { it.questionId == myQuestionId }?.answerValue @@ -153,7 +157,7 @@ class HandlerValueSpinner( tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSp) tv.includeFontPadding = true tv.setLineSpacing(0f, 1.2f) - tv.gravity = (tv.gravity and android.view.Gravity.HORIZONTAL_GRAVITY_MASK) or android.view.Gravity.CENTER_VERTICAL + tv.gravity = (tv.gravity and Gravity.HORIZONTAL_GRAVITY_MASK) or Gravity.CENTER_VERTICAL tv.setPadding(tv.paddingLeft, vPadPx, tv.paddingRight, vPadPx) tv.minHeight = rowHeight tv.isSingleLine = true diff --git a/app/src/main/java/com/dano/test1/QuestionHandler.kt b/app/src/main/java/com/dano/test1/questionnaire/QuestionHandler.kt similarity index 80% rename from app/src/main/java/com/dano/test1/QuestionHandler.kt rename to app/src/main/java/com/dano/test1/questionnaire/QuestionHandler.kt index 63f8d51..9660676 100644 --- a/app/src/main/java/com/dano/test1/QuestionHandler.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/QuestionHandler.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.view.View interface QuestionHandler { diff --git a/app/src/main/java/com/dano/test1/QuestionnaireBase.kt b/app/src/main/java/com/dano/test1/questionnaire/QuestionnaireBase.kt similarity index 94% rename from app/src/main/java/com/dano/test1/QuestionnaireBase.kt rename to app/src/main/java/com/dano/test1/questionnaire/QuestionnaireBase.kt index f97b609..67e531e 100644 --- a/app/src/main/java/com/dano/test1/QuestionnaireBase.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/QuestionnaireBase.kt @@ -1,9 +1,13 @@ -package com.dano.test1 +package com.dano.test1.questionnaire +import android.R import android.app.Activity import android.util.Log import android.view.View import android.widget.* +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.MyApp import com.dano.test1.data.* import com.google.gson.Gson import com.google.gson.JsonParser @@ -61,8 +65,8 @@ abstract class QuestionnaireBase { } protected fun setupSpinner(spinner: Spinner, spinnerValues: List, selectedValue: Any?) { - val adapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, spinnerValues).apply { - setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + val adapter = ArrayAdapter(context, R.layout.simple_spinner_item, spinnerValues).apply { + setDropDownViewResource(R.layout.simple_spinner_dropdown_item) } spinner.adapter = adapter selectedValue?.let { value -> @@ -75,7 +79,7 @@ abstract class QuestionnaireBase { protected fun navigateTo(layoutResId: Int, setup: (View) -> Unit) { context.setContentView(layoutResId) - val rootView = context.findViewById(android.R.id.content) + val rootView = context.findViewById(R.id.content) setup(rootView) } @@ -85,7 +89,7 @@ abstract class QuestionnaireBase { protected fun showEmptyScreen() { navigateTo(getLayoutResId("empty")) { - setupPrevButton(R.id.Qprev) { goToPreviousQuestion() } + setupPrevButton(com.dano.test1.R.id.Qprev) { goToPreviousQuestion() } } } @@ -172,7 +176,7 @@ abstract class QuestionnaireBase { suspend fun saveAnswersToDatabase(answers: Map, questionnaireId: String) { Log.d("AnswersMap", answers.toString()) - val db = MyApp.database + val db = MyApp.Companion.database val clientCode = answers["client_code"] as? String ?: return diff --git a/app/src/main/java/com/dano/test1/QuestionnaireGeneric.kt b/app/src/main/java/com/dano/test1/questionnaire/QuestionnaireGeneric.kt similarity index 91% rename from app/src/main/java/com/dano/test1/QuestionnaireGeneric.kt rename to app/src/main/java/com/dano/test1/questionnaire/QuestionnaireGeneric.kt index 36f1c03..9157820 100644 --- a/app/src/main/java/com/dano/test1/QuestionnaireGeneric.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/QuestionnaireGeneric.kt @@ -1,6 +1,8 @@ -package com.dano.test1 +package com.dano.test1.questionnaire import android.widget.Button +import com.dano.test1.util.LocalizationHelper +import com.dano.test1.R open class QuestionnaireGeneric(private val questionnaireFileName: String) : QuestionnaireBase() { diff --git a/app/src/main/java/com/dano/test1/QuestionnaireItem.kt b/app/src/main/java/com/dano/test1/questionnaire/QuestionnaireItem.kt similarity index 99% rename from app/src/main/java/com/dano/test1/QuestionnaireItem.kt rename to app/src/main/java/com/dano/test1/questionnaire/QuestionnaireItem.kt index 1710b22..bc15005 100644 --- a/app/src/main/java/com/dano/test1/QuestionnaireItem.kt +++ b/app/src/main/java/com/dano/test1/questionnaire/QuestionnaireItem.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.questionnaire data class Option( val key: String, // Must always be set diff --git a/app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt b/app/src/main/java/com/dano/test1/ui/DatabaseButtonHandler.kt similarity index 92% rename from app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt rename to app/src/main/java/com/dano/test1/ui/DatabaseButtonHandler.kt index ce50a2b..8500363 100644 --- a/app/src/main/java/com/dano/test1/DatabaseButtonHandler.kt +++ b/app/src/main/java/com/dano/test1/ui/DatabaseButtonHandler.kt @@ -1,14 +1,31 @@ -package com.dano.test1 +package com.dano.test1.ui +import android.graphics.Color +import android.graphics.Typeface import android.util.Log import android.view.View -import android.widget.* +import android.widget.Button +import android.widget.ProgressBar +import android.widget.TableLayout +import android.widget.TableRow +import android.widget.TextView +import android.widget.Toast +import com.dano.test1.export.ExcelExportService +import com.dano.test1.export.HeaderOrderRepository +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.MyApp +import com.dano.test1.R import com.dano.test1.data.Client import com.dano.test1.data.Question import com.dano.test1.data.Questionnaire -import kotlinx.coroutines.* -import kotlin.math.roundToInt +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.json.JSONArray +import kotlin.math.roundToInt class DatabaseButtonHandler( private val activity: MainActivity, @@ -59,7 +76,7 @@ class DatabaseButtonHandler( uiScope.launch { val clients: List = withContext(Dispatchers.IO) { - MyApp.database.clientDao().getAllClients() + MyApp.Companion.database.clientDao().getAllClients() } progress.visibility = View.GONE @@ -146,9 +163,11 @@ class DatabaseButtonHandler( uiScope.launch { val result = withContext(Dispatchers.IO) { - val allQuestionnairesDb = MyApp.database.questionnaireDao().getAll() - val completedForClient = MyApp.database.completedQuestionnaireDao().getAllForClient(clientCode) - val allAnswersForClient = MyApp.database.answerDao().getAnswersForClient(clientCode) + val allQuestionnairesDb = MyApp.Companion.database.questionnaireDao().getAll() + val completedForClient = + MyApp.Companion.database.completedQuestionnaireDao().getAllForClient(clientCode) + val allAnswersForClient = + MyApp.Companion.database.answerDao().getAnswersForClient(clientCode) Triple(allQuestionnairesDb, completedForClient, allAnswersForClient) } @@ -267,8 +286,9 @@ class DatabaseButtonHandler( uiScope.launch { val (questions, answersForClient) = withContext(Dispatchers.IO) { - val qs = MyApp.database.questionDao().getQuestionsForQuestionnaire(questionnaireId) - val ans = MyApp.database.answerDao() + val qs = MyApp.Companion.database.questionDao() + .getQuestionsForQuestionnaire(questionnaireId) + val ans = MyApp.Companion.database.answerDao() .getAnswersForClientAndQuestionnaire(clientCode, questionnaireId) qs to ans } @@ -361,7 +381,7 @@ class DatabaseButtonHandler( val row = TableRow(activity).apply { isClickable = true isFocusable = true - setBackgroundColor(android.graphics.Color.TRANSPARENT) + setBackgroundColor(Color.TRANSPARENT) setOnClickListener { onClick() } } cells.forEachIndexed { index, text -> @@ -396,7 +416,7 @@ class DatabaseButtonHandler( this.text = text setPadding(dp(12), dp(10), dp(12), dp(10)) textSize = 16f - setTypeface(typeface, android.graphics.Typeface.BOLD) + setTypeface(typeface, Typeface.BOLD) } private fun makeBodyCell( @@ -462,4 +482,4 @@ class DatabaseButtonHandler( } catch (_: Exception) { emptyList() } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/dano/test1/EditButtonHandler.kt b/app/src/main/java/com/dano/test1/ui/EditButtonHandler.kt similarity index 92% rename from app/src/main/java/com/dano/test1/EditButtonHandler.kt rename to app/src/main/java/com/dano/test1/ui/EditButtonHandler.kt index f0fa422..2e0be54 100644 --- a/app/src/main/java/com/dano/test1/EditButtonHandler.kt +++ b/app/src/main/java/com/dano/test1/ui/EditButtonHandler.kt @@ -1,10 +1,14 @@ -package com.dano.test1 +package com.dano.test1.ui import android.widget.Button import android.widget.EditText import android.widget.Toast +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.MyApp import kotlinx.coroutines.* import com.dano.test1.data.CompletedQuestionnaire +import com.dano.test1.questionnaire.GlobalValues class EditButtonHandler( private val activity: MainActivity, @@ -58,7 +62,7 @@ class EditButtonHandler( } val completedEntries: List = - MyApp.database.completedQuestionnaireDao().getAllForClient(desiredCode) + MyApp.Companion.database.completedQuestionnaireDao().getAllForClient(desiredCode) val completedFiles = completedEntries.filter { it.isDone }.map { it.questionnaireId.lowercase() } diff --git a/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt b/app/src/main/java/com/dano/test1/ui/HandlerOpeningScreen.kt similarity index 96% rename from app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt rename to app/src/main/java/com/dano/test1/ui/HandlerOpeningScreen.kt index f3909f8..c8777db 100644 --- a/app/src/main/java/com/dano/test1/HandlerOpeningScreen.kt +++ b/app/src/main/java/com/dano/test1/ui/HandlerOpeningScreen.kt @@ -1,13 +1,26 @@ -package com.dano.test1 +package com.dano.test1.ui +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color +import android.graphics.drawable.GradientDrawable import android.os.Handler import android.os.Looper import android.util.TypedValue import android.view.Gravity import android.view.View import android.widget.* +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.R +import com.dano.test1.auth.LoginManager +import com.dano.test1.auth.TokenStore +import com.dano.test1.network.DatabaseUploader +import com.dano.test1.network.NetworkUtils +import com.dano.test1.questionnaire.GlobalValues +import com.dano.test1.questionnaire.QuestionItem +import com.dano.test1.questionnaire.QuestionnaireBase +import com.dano.test1.questionnaire.QuestionnaireGeneric import com.google.android.material.button.MaterialButton import org.json.JSONArray import org.json.JSONObject @@ -682,22 +695,22 @@ class HandlerOpeningScreen(private val activity: MainActivity) { - private fun showRedToast(ctx: android.content.Context, message: String) { - val tv = android.widget.TextView(ctx).apply { + private fun showRedToast(ctx: Context, message: String) { + val tv = TextView(ctx).apply { text = message - setTextColor(android.graphics.Color.WHITE) + setTextColor(Color.WHITE) textSize = 16f setPadding(32, 20, 32, 20) - background = android.graphics.drawable.GradientDrawable().apply { - shape = android.graphics.drawable.GradientDrawable.RECTANGLE + background = GradientDrawable().apply { + shape = GradientDrawable.RECTANGLE cornerRadius = 24f - setColor(android.graphics.Color.parseColor("#D32F2F")) // kräftiges Rot + setColor(Color.parseColor("#D32F2F")) // kräftiges Rot } } - android.widget.Toast(ctx).apply { - duration = android.widget.Toast.LENGTH_LONG + Toast(ctx).apply { + duration = Toast.LENGTH_LONG view = tv - setGravity(android.view.Gravity.TOP or android.view.Gravity.CENTER_HORIZONTAL, 0, 120) + setGravity(Gravity.TOP or Gravity.CENTER_HORIZONTAL, 0, 120) }.show() } diff --git a/app/src/main/java/com/dano/test1/LoadButtonHandler.kt b/app/src/main/java/com/dano/test1/ui/LoadButtonHandler.kt similarity index 90% rename from app/src/main/java/com/dano/test1/LoadButtonHandler.kt rename to app/src/main/java/com/dano/test1/ui/LoadButtonHandler.kt index dd2b699..87c7781 100644 --- a/app/src/main/java/com/dano/test1/LoadButtonHandler.kt +++ b/app/src/main/java/com/dano/test1/ui/LoadButtonHandler.kt @@ -1,10 +1,15 @@ -package com.dano.test1 +package com.dano.test1.ui import android.widget.Button import android.widget.EditText import android.widget.Toast +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.MyApp import kotlinx.coroutines.* import com.dano.test1.data.CompletedQuestionnaire +import com.dano.test1.questionnaire.GlobalValues +import com.dano.test1.questionnaire.QuestionItem class LoadButtonHandler( private val activity: MainActivity, @@ -40,7 +45,7 @@ class LoadButtonHandler( GlobalValues.LAST_CLIENT_CODE = clientCode CoroutineScope(Dispatchers.IO).launch { - val client = MyApp.database.clientDao().getClientByCode(clientCode) + val client = MyApp.Companion.database.clientDao().getClientByCode(clientCode) if (client == null) { GlobalValues.LOADED_CLIENT_CODE = null withContext(Dispatchers.Main) { @@ -80,7 +85,7 @@ class LoadButtonHandler( } } is QuestionItem.Condition.QuestionCondition -> { - val answers = MyApp.database.answerDao().getAnswersForClientAndQuestionnaire(clientCode, condition.questionnaire) + val answers = MyApp.Companion.database.answerDao().getAnswersForClientAndQuestionnaire(clientCode, condition.questionnaire) val relevant = answers.find { it.questionId.endsWith(condition.questionId, ignoreCase = true) } val answerValue = relevant?.answerValue ?: "" when (condition.operator) { @@ -97,7 +102,7 @@ class LoadButtonHandler( } if (!reqOk) return false val q = condition.questionCheck ?: return true - val answers = MyApp.database.answerDao().getAnswersForClientAndQuestionnaire(clientCode, q.questionnaire) + val answers = MyApp.Companion.database.answerDao().getAnswersForClientAndQuestionnaire(clientCode, q.questionnaire) val relevant = answers.find { it.questionId.endsWith(q.questionId, ignoreCase = true) } val answerValue = relevant?.answerValue ?: "" when (q.operator) { @@ -117,7 +122,7 @@ class LoadButtonHandler( private suspend fun handleNormalLoad(clientCode: String) { val completedEntries = withContext(Dispatchers.IO) { - MyApp.database.completedQuestionnaireDao().getAllForClient(clientCode) + MyApp.Companion.database.completedQuestionnaireDao().getAllForClient(clientCode) } buttonPoints.clear() diff --git a/app/src/main/java/com/dano/test1/SaveButtonHandler.kt b/app/src/main/java/com/dano/test1/ui/SaveButtonHandler.kt similarity index 80% rename from app/src/main/java/com/dano/test1/SaveButtonHandler.kt rename to app/src/main/java/com/dano/test1/ui/SaveButtonHandler.kt index 47812fc..d0def7a 100644 --- a/app/src/main/java/com/dano/test1/SaveButtonHandler.kt +++ b/app/src/main/java/com/dano/test1/ui/SaveButtonHandler.kt @@ -1,12 +1,21 @@ -package com.dano.test1 +package com.dano.test1.ui +import android.content.ActivityNotFoundException +import android.content.ContentUris +import android.content.ContentValues +import android.content.Intent import android.graphics.Canvas import android.graphics.Paint import android.graphics.pdf.PdfDocument +import android.provider.MediaStore import android.util.Log import android.widget.Button import android.widget.EditText import android.widget.Toast +import com.dano.test1.util.LanguageManager +import com.dano.test1.MainActivity +import com.dano.test1.MyApp +import com.dano.test1.questionnaire.GlobalValues import kotlinx.coroutines.* class SaveButtonHandler( @@ -35,7 +44,7 @@ class SaveButtonHandler( private fun showCompletedQuestionnaires(clientCode: String) { CoroutineScope(Dispatchers.IO).launch { val actualClientCode = clientCode.removeSuffix("_database") - val completedEntries = MyApp.database.completedQuestionnaireDao().getAllForClient(actualClientCode) + val completedEntries = MyApp.Companion.database.completedQuestionnaireDao().getAllForClient(actualClientCode) Log.d("PDF_DEBUG", "Completed entries for client $actualClientCode:") for (entry in completedEntries) { @@ -65,7 +74,7 @@ class SaveButtonHandler( canvas.drawText("Points: ${entry.sumPoints ?: "N/A"}", 20f, yPosition, paint) yPosition += 30f - val answers = MyApp.database.answerDao().getAnswersForClientAndQuestionnaire(actualClientCode, entry.questionnaireId) + val answers = MyApp.Companion.database.answerDao().getAnswersForClientAndQuestionnaire(actualClientCode, entry.questionnaireId) for (answer in answers) { val questionKey = answer.questionId.substringAfter("-") @@ -105,19 +114,19 @@ class SaveButtonHandler( val resolver = activity.contentResolver val deleteIfExists: (String) -> Unit = { name -> - val projection = arrayOf(android.provider.MediaStore.MediaColumns._ID) - val selection = "${android.provider.MediaStore.MediaColumns.DISPLAY_NAME} = ?" + val projection = arrayOf(MediaStore.MediaColumns._ID) + val selection = "${MediaStore.MediaColumns.DISPLAY_NAME} = ?" val selectionArgs = arrayOf(name) val query = resolver.query( - android.provider.MediaStore.Downloads.EXTERNAL_CONTENT_URI, + MediaStore.Downloads.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null ) query?.use { cursor -> if (cursor.moveToFirst()) { - val idColumn = cursor.getColumnIndexOrThrow(android.provider.MediaStore.MediaColumns._ID) + val idColumn = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns._ID) val id = cursor.getLong(idColumn) - val deleteUri = android.content.ContentUris.withAppendedId( - android.provider.MediaStore.Downloads.EXTERNAL_CONTENT_URI, id + val deleteUri = ContentUris.withAppendedId( + MediaStore.Downloads.EXTERNAL_CONTENT_URI, id ) resolver.delete(deleteUri, null, null) } @@ -129,20 +138,20 @@ class SaveButtonHandler( try { val pdfUri = resolver.insert( - android.provider.MediaStore.Downloads.EXTERNAL_CONTENT_URI, - android.content.ContentValues().apply { - put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, pdfFileName) - put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/pdf") - put(android.provider.MediaStore.MediaColumns.RELATIVE_PATH, "Download/") + MediaStore.Downloads.EXTERNAL_CONTENT_URI, + ContentValues().apply { + put(MediaStore.MediaColumns.DISPLAY_NAME, pdfFileName) + put(MediaStore.MediaColumns.MIME_TYPE, "application/pdf") + put(MediaStore.MediaColumns.RELATIVE_PATH, "Download/") } ) val csvUri = resolver.insert( - android.provider.MediaStore.Downloads.EXTERNAL_CONTENT_URI, - android.content.ContentValues().apply { - put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, csvFileName) - put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "text/csv") - put(android.provider.MediaStore.MediaColumns.RELATIVE_PATH, "Download/") + MediaStore.Downloads.EXTERNAL_CONTENT_URI, + ContentValues().apply { + put(MediaStore.MediaColumns.DISPLAY_NAME, csvFileName) + put(MediaStore.MediaColumns.MIME_TYPE, "text/csv") + put(MediaStore.MediaColumns.RELATIVE_PATH, "Download/") } ) @@ -162,13 +171,13 @@ class SaveButtonHandler( Toast.makeText(activity, msg, Toast.LENGTH_LONG).show() pdfUri?.let { - val intent = android.content.Intent(android.content.Intent.ACTION_VIEW).apply { + val intent = Intent(Intent.ACTION_VIEW).apply { setDataAndType(it, "application/pdf") - addFlags(android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION or android.content.Intent.FLAG_ACTIVITY_NO_HISTORY) + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NO_HISTORY) } try { activity.startActivity(intent) - } catch (e: android.content.ActivityNotFoundException) { + } catch (e: ActivityNotFoundException) { val noViewer = LanguageManager.getText(languageIDProvider(), "no_pdf_viewer") Toast.makeText(activity, noViewer, Toast.LENGTH_SHORT).show() } diff --git a/app/src/main/java/com/dano/test1/CountriesSpinner.kt b/app/src/main/java/com/dano/test1/util/CountriesSpinner.kt similarity index 97% rename from app/src/main/java/com/dano/test1/CountriesSpinner.kt rename to app/src/main/java/com/dano/test1/util/CountriesSpinner.kt index 439d171..b2835ee 100644 --- a/app/src/main/java/com/dano/test1/CountriesSpinner.kt +++ b/app/src/main/java/com/dano/test1/util/CountriesSpinner.kt @@ -1,4 +1,6 @@ -package com.dano.test1 +package com.dano.test1.util + +import com.dano.test1.util.LanguageManager object Countries { fun getAllCountries(languageID: String): List { diff --git a/app/src/main/java/com/dano/test1/LanguageManager.kt b/app/src/main/java/com/dano/test1/util/LanguageManager.kt similarity index 99% rename from app/src/main/java/com/dano/test1/LanguageManager.kt rename to app/src/main/java/com/dano/test1/util/LanguageManager.kt index f8e2415..db3f095 100644 --- a/app/src/main/java/com/dano/test1/LanguageManager.kt +++ b/app/src/main/java/com/dano/test1/util/LanguageManager.kt @@ -1,6 +1,8 @@ -package com.dano.test1 +package com.dano.test1.util -import java.util.Calendar +import com.dano.test1.questionnaire.MAX_VALUE_AGE +import com.dano.test1.questionnaire.MAX_VALUE_YEAR +import com.dano.test1.ui.RHS_POINTS object LanguageManager { fun getTextFormatted(languageId: String, key: String, vararg args: Any): String { @@ -61,14 +63,14 @@ object LanguageManager { "once" to "einmal", "year_after_2000" to "Das Jahr muss nach 2000 liegen!", "year_after_departure" to "Das Jahr muss nach dem Verlassen des Herkunftslandes liegen!", - "year_max" to "Das Jahr muss kleiner oder gleich $MAX_VALUE_YEAR sein!", + "year_max" to "Das Jahr muss kleiner oder gleich ${MAX_VALUE_YEAR} sein!", "data_final_warning" to "Wichtig: Die Daten können nach dem Abschluss nicht mehr verändert oder bearbeitet werden!", "multiple_times" to "mehrmals", "more_than_15_years" to "mehr als 15 Jahre", "no" to "Nein", "no_answer" to "keine Angabe", "other_country" to "anderes Land", - "value_must_be_less_equal_max" to "Der Wert muss kleiner oder gleich $MAX_VALUE_AGE sein!", + "value_must_be_less_equal_max" to "Der Wert muss kleiner oder gleich ${MAX_VALUE_AGE} sein!", "value_between_1_and_15" to "Der Wert muss zwischen 1 und 15 liegen!", "invalid_month" to "Ungültige Monatsangabe!", "invalid_year" to "Ungültige Jahresangabe!", @@ -438,14 +440,14 @@ object LanguageManager { "once" to "once", "year_after_2000" to "The year must be after 2000!", "year_after_departure" to "The year must be after leaving the country of origin!", - "year_max" to "The year must be less than or equal to $MAX_VALUE_YEAR!", + "year_max" to "The year must be less than or equal to ${MAX_VALUE_YEAR}!", "data_final_warning" to "Important: The data cannot be changed or edited after completion!", "multiple_times" to "multiple times", "more_than_15_years" to "more than 15 years", "no" to "No", "no_answer" to "No answer", "other_country" to "Other country", - "value_must_be_less_equal_max" to "The value must be less than or equal to $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "The value must be less than or equal to ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "The value must be between 1 and 15!", "invalid_month" to "Invalid month!", "invalid_year" to "Invalid year!", @@ -814,14 +816,14 @@ object LanguageManager { "once" to "une fois", "year_after_2000" to "L’année doit être après 2000 !", "year_after_departure" to "L’année doit être après le départ du pays d’origine !", - "year_max" to "L’année doit être inférieure ou égale à $MAX_VALUE_YEAR !", + "year_max" to "L’année doit être inférieure ou égale à ${MAX_VALUE_YEAR} !", "data_final_warning" to "Important : Les données ne peuvent plus être modifiées ou éditées après la validation !", "multiple_times" to "plusieurs fois", "more_than_15_years" to "plus de 15 ans", "no" to "Non", "no_answer" to "pas de réponse", "other_country" to "autre pays", - "value_must_be_less_equal_max" to "La valeur doit être inférieure ou égale à $MAX_VALUE_AGE !", + "value_must_be_less_equal_max" to "La valeur doit être inférieure ou égale à ${MAX_VALUE_AGE} !", "value_between_1_and_15" to "La valeur doit être comprise entre 1 et 15 !", "invalid_month" to "Mois invalide !", "invalid_year" to "Année invalide !", @@ -1194,14 +1196,14 @@ object LanguageManager { "once" to "один раз", "year_after_2000" to "Год должен быть после 2000!", "year_after_departure" to "Год должен быть после даты выезда из страны происхождения!", - "year_max" to "Год должен быть меньше или равен $MAX_VALUE_YEAR!", + "year_max" to "Год должен быть меньше или равен ${MAX_VALUE_YEAR}!", "data_final_warning" to "Внимание: Данные нельзя изменять после завершения!", "multiple_times" to "несколько раз", "more_than_15_years" to "более 15 лет", "no" to "Нет", "no_answer" to "без ответа", "other_country" to "другая страна", - "value_must_be_less_equal_max" to "Значение должно быть меньше или равно $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "Значение должно быть меньше или равно ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "Значение должно быть между 1 и 15!", "invalid_month" to "Недопустимый месяц!", "invalid_year" to "Недопустимый год!", @@ -1570,14 +1572,14 @@ object LanguageManager { "once" to "один раз", "year_after_2000" to "Рік має бути після 2000!", "year_after_departure" to "Рік має бути після виїзду з країни походження!", - "year_max" to "Рік має бути меншим або рівним $MAX_VALUE_YEAR!", + "year_max" to "Рік має бути меншим або рівним ${MAX_VALUE_YEAR}!", "data_final_warning" to "Важливо: Дані після завершення не можна змінити або редагувати!", "multiple_times" to "багато разів", "more_than_15_years" to "більше 15 років", "no" to "Ні", "no_answer" to "немає відповіді", "other_country" to "інша країна", - "value_must_be_less_equal_max" to "Значення має бути меншим або рівним $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "Значення має бути меншим або рівним ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "Значення має бути від 1 до 15!", "invalid_month" to "Неправильний місяць!", "invalid_year" to "Неправильний рік!", @@ -1950,14 +1952,14 @@ object LanguageManager { "once" to "bir kez", "year_after_2000" to "Yıl 2000’den sonra olmalıdır!", "year_after_departure" to "Yıl, menşe ülkeyi terk ettikten sonra olmalıdır!", - "year_max" to "Yıl $MAX_VALUE_YEAR’den küçük veya ona eşit olmalıdır!", + "year_max" to "Yıl ${MAX_VALUE_YEAR}’den küçük veya ona eşit olmalıdır!", "data_final_warning" to "Önemli: Veriler tamamlandıktan sonra değiştirilemez veya düzenlenemez!", "multiple_times" to "birden fazla kez", "more_than_15_years" to "15 yıldan fazla", "no" to "Hayır", "no_answer" to "Cevap yok", "other_country" to "diğer ülke", - "value_must_be_less_equal_max" to "Değer $MAX_VALUE_AGE’den küçük veya ona eşit olmalıdır!", + "value_must_be_less_equal_max" to "Değer ${MAX_VALUE_AGE}’den küçük veya ona eşit olmalıdır!", "value_between_1_and_15" to "Değer 1 ile 15 arasında olmalıdır!", "invalid_month" to "Geçersiz ay girişi!", "invalid_year" to "Geçersiz yıl girişi!", @@ -2330,14 +2332,14 @@ object LanguageManager { "once" to "jeden raz", "year_after_2000" to "Rok musi być po 2000!", "year_after_departure" to "Rok musi być po opuszczeniu kraju pochodzenia!", - "year_max" to "Rok musi być mniejszy lub równy $MAX_VALUE_YEAR!", + "year_max" to "Rok musi być mniejszy lub równy ${MAX_VALUE_YEAR}!", "data_final_warning" to "Ważne: Po zakończeniu dane nie mogą być zmienione ani edytowane!", "multiple_times" to "kilka razy", "more_than_15_years" to "więcej niż 15 lat", "no" to "Nie", "no_answer" to "brak odpowiedzi", "other_country" to "inny kraj", - "value_must_be_less_equal_max" to "Wartość musi być mniejsza lub równa $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "Wartość musi być mniejsza lub równa ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "Wartość musi być między 1 a 15!", "invalid_month" to "Nieprawidłowy miesiąc!", "invalid_year" to "Nieprawidłowy rok!", @@ -2710,14 +2712,14 @@ object LanguageManager { "once" to "مرة واحدة", "year_after_2000" to "يجب أن تكون السنة بعد 2000!", "year_after_departure" to "يجب أن تكون السنة بعد مغادرة بلد المنشأ!", - "year_max" to "يجب أن تكون السنة أقل من أو تساوي $MAX_VALUE_YEAR!", + "year_max" to "يجب أن تكون السنة أقل من أو تساوي ${MAX_VALUE_YEAR}!", "data_final_warning" to "هام: لا يمكن تعديل البيانات بعد الانتهاء!", "multiple_times" to "عدة مرات", "more_than_15_years" to "أكثر من 15 سنة", "no" to "لا", "no_answer" to "لا يوجد إجابة", "other_country" to "بلد آخر", - "value_must_be_less_equal_max" to "يجب أن تكون القيمة أقل من أو تساوي $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "يجب أن تكون القيمة أقل من أو تساوي ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "يجب أن تكون القيمة بين 1 و15!", "invalid_month" to "شهر غير صالح!", "invalid_year" to "سنة غير صالحة!", @@ -3090,14 +3092,14 @@ object LanguageManager { "once" to "o dată", "year_after_2000" to "Anul trebuie să fie după 2000!", "year_after_departure" to "Anul trebuie să fie după plecarea din țara de origine!", - "year_max" to "Anul trebuie să fie mai mic sau egal cu $MAX_VALUE_YEAR!", + "year_max" to "Anul trebuie să fie mai mic sau egal cu ${MAX_VALUE_YEAR}!", "data_final_warning" to "Important: Datele nu mai pot fi modificate după finalizare!", "multiple_times" to "de mai multe ori", "more_than_15_years" to "mai mult de 15 ani", "no" to "Nu", "no_answer" to "fără răspuns", "other_country" to "altă țară", - "value_must_be_less_equal_max" to "Valoarea trebuie să fie mai mică sau egală cu $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "Valoarea trebuie să fie mai mică sau egală cu ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "Valoarea trebuie să fie între 1 și 15!", "invalid_month" to "Lună invalidă!", "invalid_year" to "An invalid!", @@ -3470,14 +3472,14 @@ object LanguageManager { "once" to "una vez", "year_after_2000" to "¡El año debe ser posterior al 2000!", "year_after_departure" to "¡El año debe ser posterior a la salida de su país de origen!", - "year_max" to "¡El año debe ser menor o igual que $MAX_VALUE_YEAR!", + "year_max" to "¡El año debe ser menor o igual que ${MAX_VALUE_YEAR}!", "data_final_warning" to "Importante: Después de finalizar, los datos no podrán cambiarse o editarse.", "multiple_times" to "varias veces", "more_than_15_years" to "más de 15 años", "no" to "No", "no_answer" to "sin respuesta", "other_country" to "otro país", - "value_must_be_less_equal_max" to "¡El valor debe ser menor o igual que $MAX_VALUE_AGE!", + "value_must_be_less_equal_max" to "¡El valor debe ser menor o igual que ${MAX_VALUE_AGE}!", "value_between_1_and_15" to "¡El valor debe estar entre 1 y 15!", "invalid_month" to "¡Mes no válido!", "invalid_year" to "¡Año no válido!", diff --git a/app/src/main/java/com/dano/test1/LocalizationHelper.kt b/app/src/main/java/com/dano/test1/util/LocalizationHelper.kt similarity index 98% rename from app/src/main/java/com/dano/test1/LocalizationHelper.kt rename to app/src/main/java/com/dano/test1/util/LocalizationHelper.kt index a648bb4..234987c 100644 --- a/app/src/main/java/com/dano/test1/LocalizationHelper.kt +++ b/app/src/main/java/com/dano/test1/util/LocalizationHelper.kt @@ -1,4 +1,4 @@ -package com.dano.test1 +package com.dano.test1.util import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/com/dano/test1/MonthsSpinner.kt b/app/src/main/java/com/dano/test1/util/MonthsSpinner.kt similarity index 91% rename from app/src/main/java/com/dano/test1/MonthsSpinner.kt rename to app/src/main/java/com/dano/test1/util/MonthsSpinner.kt index 8d30a82..a36e9be 100644 --- a/app/src/main/java/com/dano/test1/MonthsSpinner.kt +++ b/app/src/main/java/com/dano/test1/util/MonthsSpinner.kt @@ -1,11 +1,11 @@ -package com.dano.test1 +package com.dano.test1.util data class Month(val name: String) { override fun toString(): String = name } object Months { - fun getAllMonths(languageID: String): List { + fun getAllMonths(languageID: String): List { return listOf( Month(LanguageManager.getText(languageID, "january")), Month(LanguageManager.getText(languageID, "february")),