directory refactor
This commit is contained in:
13
.idea/deviceManager.xml
generated
Normal file
13
.idea/deviceManager.xml
generated
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DeviceTable">
|
||||
<option name="columnSorters">
|
||||
<list>
|
||||
<ColumnSorterState>
|
||||
<option name="column" value="Name" />
|
||||
<option name="order" value="ASCENDING" />
|
||||
</ColumnSorterState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@ -13,7 +13,11 @@ 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.network.DatabaseDownloader
|
||||
import com.dano.test1.network.LoginManager
|
||||
import com.dano.test1.network.TokenStore
|
||||
import com.dano.test1.questionnaire.QuestionnaireBase
|
||||
import com.dano.test1.ui.HandlerOpeningScreen
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.data
|
||||
|
||||
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.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:
|
||||
@ -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,
|
||||
@ -175,4 +179,4 @@ class ExcelExportService(
|
||||
for (key in candidates) localizeEnglishNoBrackets(key)?.let { return it }
|
||||
return raw
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,11 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.data
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import com.dano.test1.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()
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.network
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import com.dano.test1.AES256Helper
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.network
|
||||
|
||||
import android.content.Context
|
||||
import android.database.sqlite.SQLiteDatabase
|
||||
@ -8,6 +8,7 @@ import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import android.database.Cursor
|
||||
import com.dano.test1.AES256Helper
|
||||
import okhttp3.*
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.RequestBody.Companion.asRequestBody
|
||||
@ -1,9 +1,9 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.network
|
||||
|
||||
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)
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.network
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.network
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire
|
||||
import android.view.View
|
||||
|
||||
interface QuestionHandler {
|
||||
@ -1,10 +1,23 @@
|
||||
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.LanguageManager
|
||||
import com.dano.test1.MainActivity
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.data.*
|
||||
import com.dano.test1.questionnaire.handlers.HandlerClientCoachCode
|
||||
import com.dano.test1.questionnaire.handlers.HandlerClientNotSigned
|
||||
import com.dano.test1.questionnaire.handlers.HandlerDateSpinner
|
||||
import com.dano.test1.questionnaire.handlers.HandlerGlassScaleQuestion
|
||||
import com.dano.test1.questionnaire.handlers.HandlerLastPage
|
||||
import com.dano.test1.questionnaire.handlers.HandlerMultiCheckboxQuestion
|
||||
import com.dano.test1.questionnaire.handlers.HandlerRadioQuestion
|
||||
import com.dano.test1.questionnaire.handlers.HandlerStringSpinner
|
||||
import com.dano.test1.questionnaire.handlers.HandlerValueSpinner
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonParser
|
||||
import kotlinx.coroutines.*
|
||||
@ -61,8 +74,8 @@ abstract class QuestionnaireBase<T> {
|
||||
}
|
||||
|
||||
protected fun setupSpinner(spinner: Spinner, spinnerValues: List<Any>, 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 +88,7 @@ abstract class QuestionnaireBase<T> {
|
||||
|
||||
protected fun navigateTo(layoutResId: Int, setup: (View) -> Unit) {
|
||||
context.setContentView(layoutResId)
|
||||
val rootView = context.findViewById<View>(android.R.id.content)
|
||||
val rootView = context.findViewById<View>(R.id.content)
|
||||
setup(rootView)
|
||||
}
|
||||
|
||||
@ -85,7 +98,7 @@ abstract class QuestionnaireBase<T> {
|
||||
|
||||
protected fun showEmptyScreen() {
|
||||
navigateTo(getLayoutResId("empty")) {
|
||||
setupPrevButton(R.id.Qprev) { goToPreviousQuestion() }
|
||||
setupPrevButton(com.dano.test1.R.id.Qprev) { goToPreviousQuestion() }
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,17 +168,89 @@ abstract class QuestionnaireBase<T> {
|
||||
|
||||
protected open fun createHandlerForQuestion(question: QuestionItem): QuestionHandler? {
|
||||
return when (question) {
|
||||
is QuestionItem.RadioQuestion -> HandlerRadioQuestion(context, answers, points, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::goToQuestionById, ::showToast, questionnaireMeta.id)
|
||||
is QuestionItem.ClientCoachCodeQuestion -> HandlerClientCoachCode(answers, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::showToast)
|
||||
is QuestionItem.DateSpinnerQuestion -> HandlerDateSpinner(context, answers, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::showToast, questionnaireMeta.id)
|
||||
is QuestionItem.ValueSpinnerQuestion -> HandlerValueSpinner(context, answers, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::goToQuestionById, ::showToast, questionnaireMeta.id)
|
||||
is QuestionItem.GlassScaleQuestion -> HandlerGlassScaleQuestion(context, answers, points, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::showToast, questionnaireMeta.id)
|
||||
is QuestionItem.ClientNotSigned -> HandlerClientNotSigned(answers, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::showToast)
|
||||
is QuestionItem.StringSpinnerQuestion -> HandlerStringSpinner(context, answers, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::showToast, questionnaireMeta.id)
|
||||
is QuestionItem.MultiCheckboxQuestion -> HandlerMultiCheckboxQuestion(context, answers, points, languageID, ::goToNextQuestion, ::goToPreviousQuestion, ::showToast, questionnaireMeta.id)
|
||||
is QuestionItem.RadioQuestion -> HandlerRadioQuestion(
|
||||
context,
|
||||
answers,
|
||||
points,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::goToQuestionById,
|
||||
::showToast,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
is QuestionItem.ClientCoachCodeQuestion -> HandlerClientCoachCode(
|
||||
answers,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::showToast
|
||||
)
|
||||
is QuestionItem.DateSpinnerQuestion -> HandlerDateSpinner(
|
||||
context,
|
||||
answers,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::showToast,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
is QuestionItem.ValueSpinnerQuestion -> HandlerValueSpinner(
|
||||
context,
|
||||
answers,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::goToQuestionById,
|
||||
::showToast,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
is QuestionItem.GlassScaleQuestion -> HandlerGlassScaleQuestion(
|
||||
context,
|
||||
answers,
|
||||
points,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::showToast,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
is QuestionItem.ClientNotSigned -> HandlerClientNotSigned(
|
||||
answers,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::showToast
|
||||
)
|
||||
is QuestionItem.StringSpinnerQuestion -> HandlerStringSpinner(
|
||||
context,
|
||||
answers,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::showToast,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
is QuestionItem.MultiCheckboxQuestion -> HandlerMultiCheckboxQuestion(
|
||||
context,
|
||||
answers,
|
||||
points,
|
||||
languageID,
|
||||
::goToNextQuestion,
|
||||
::goToPreviousQuestion,
|
||||
::showToast,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
is QuestionItem.LastPage -> HandlerLastPage(
|
||||
answers, languageID, ::goToNextQuestion, ::goToPreviousQuestion
|
||||
) { CoroutineScope(Dispatchers.IO).launch { saveAnswersToDatabase(answers, questionnaireMeta.id) } }
|
||||
) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
saveAnswersToDatabase(
|
||||
answers,
|
||||
questionnaireMeta.id
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,8 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire
|
||||
|
||||
import android.widget.Button
|
||||
import com.dano.test1.LocalizationHelper
|
||||
import com.dano.test1.R
|
||||
|
||||
open class QuestionnaireGeneric(private val questionnaireFileName: String) : QuestionnaireBase<Unit>() {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire
|
||||
|
||||
data class Option(
|
||||
val key: String, // Must always be set
|
||||
@ -1,9 +1,16 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import android.util.TypedValue
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
import com.dano.test1.network.TokenStore
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@ -1,7 +1,11 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
|
||||
/*
|
||||
Zweck:
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
@ -8,8 +8,18 @@ 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.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.questionnaire.MAX_VALUE_YEAR
|
||||
import com.dano.test1.ui.Month
|
||||
import com.dano.test1.ui.Months
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
|
||||
/*
|
||||
Zweck:
|
||||
@ -233,7 +243,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
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.content.Context
|
||||
import android.util.TypedValue
|
||||
@ -6,6 +6,12 @@ import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
import kotlinx.coroutines.*
|
||||
|
||||
/*
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
@ -7,6 +7,12 @@ import kotlinx.coroutines.*
|
||||
import android.util.TypedValue
|
||||
import android.widget.TextView
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MainActivity
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
import com.google.android.material.button.MaterialButton
|
||||
|
||||
/*
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
@ -6,6 +6,12 @@ import android.widget.*
|
||||
import kotlinx.coroutines.*
|
||||
import android.util.TypedValue
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
|
||||
/*
|
||||
Zweck:
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
@ -7,6 +7,12 @@ import android.widget.*
|
||||
import kotlinx.coroutines.*
|
||||
import android.util.TypedValue
|
||||
import androidx.core.widget.TextViewCompat // <— hinzugefügt
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
|
||||
/*
|
||||
Zweck:
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
@ -6,8 +6,16 @@ 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.ui.Countries
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
|
||||
/*
|
||||
Zweck:
|
||||
@ -146,7 +154,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
|
||||
@ -1,4 +1,4 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.questionnaire.handlers
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
@ -6,7 +6,14 @@ 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.questionnaire.GlobalValues
|
||||
import com.dano.test1.LanguageManager
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.QuestionHandler
|
||||
import com.dano.test1.questionnaire.QuestionItem
|
||||
import com.dano.test1.R
|
||||
|
||||
/*
|
||||
Zweck:
|
||||
@ -153,7 +160,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
|
||||
@ -1,4 +1,6 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.ui
|
||||
|
||||
import com.dano.test1.LanguageManager
|
||||
|
||||
object Countries {
|
||||
fun getAllCountries(languageID: String): List<String> {
|
||||
@ -1,9 +1,17 @@
|
||||
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 com.dano.test1.data.ExcelExportService
|
||||
import com.dano.test1.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.HeaderOrderRepository
|
||||
import com.dano.test1.data.Question
|
||||
import com.dano.test1.data.Questionnaire
|
||||
import kotlinx.coroutines.*
|
||||
@ -361,7 +369,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 +404,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(
|
||||
@ -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.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,
|
||||
@ -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.LanguageManager
|
||||
import com.dano.test1.MainActivity
|
||||
import com.dano.test1.R
|
||||
import com.dano.test1.network.DatabaseUploader
|
||||
import com.dano.test1.network.LoginManager
|
||||
import com.dano.test1.network.NetworkUtils
|
||||
import com.dano.test1.network.TokenStore
|
||||
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()
|
||||
}
|
||||
|
||||
@ -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.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,
|
||||
@ -1,4 +1,6 @@
|
||||
package com.dano.test1
|
||||
package com.dano.test1.ui
|
||||
|
||||
import com.dano.test1.LanguageManager
|
||||
|
||||
data class Month(val name: String) {
|
||||
override fun toString(): String = name
|
||||
@ -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.LanguageManager
|
||||
import com.dano.test1.MainActivity
|
||||
import com.dano.test1.MyApp
|
||||
import com.dano.test1.questionnaire.GlobalValues
|
||||
import kotlinx.coroutines.*
|
||||
|
||||
class SaveButtonHandler(
|
||||
@ -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()
|
||||
}
|
||||
@ -1,6 +1,8 @@
|
||||
package com.dano.test1
|
||||
|
||||
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 "<b><font color='#FF0000'>Wichtig:</font></b> 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 "<b><font color='#FF0000'>Important:</font></b> 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 "<b><font color='#FF0000'>Important :</font></b> 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 "<b><font color='#FF0000'>Внимание:</font></b> Данные нельзя изменять после завершения!",
|
||||
"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 "<b><font color='#FF0000'>Важливо:</font></b> Дані після завершення не можна змінити або редагувати!",
|
||||
"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 "<b><font color='#FF0000'>Önemli:</font></b> 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 "<b><font color='#FF0000'>Ważne:</font></b> 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 "<b><font color='#FF0000'>هام:</font></b> لا يمكن تعديل البيانات بعد الانتهاء!",
|
||||
"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 "<b><font color='#FF0000'>Important:</font></b> 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 "<b><font color='#FF0000'>Importante:</font></b> 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!",
|
||||
Reference in New Issue
Block a user